2015-09-17 128 views
4

我有一個類庫和一些模型類和一個DbContext類(所有這些類都是公共的)。此類庫由MVC-5應用程序引用。如何使用控制器腳手架的引用程序集

是否有可能在該MVC-5應用程序中使用該引用的類庫中的模型類來構建控制器的腳手架?

當我使用控制器 - 添加 - 控制器 - MVC控制器與意見,使用實體框架然後在對話框中兩個組合框的Model類數據上下文類不包含任何項目。當我從引用的類庫中填寫完全限定名的類時,那麼按鈕仍然是禁用的。我究竟做錯了什麼?

enter image description here

+0

您是否嘗試過清潔和重建項目? –

+0

我已經嘗試幾乎所有可能的:)。目前爲止沒有任何成功。 – dee

+0

看起來沒有人有答案!我面臨同樣的問題! –

回答

0

腳手架編譯爲DLL文件引用的程序根本不起作用。有必要添加對包含模型類的項目的引用。然後它按預期工作。 這是一個錯誤或者特徵?

+0

它看起來像一個錯誤,甚至在.net核心重新實現:https://github.com/aspnet /腳手架/問題/ 251 – balint

1

通過一些調整,您可以使用腳手架引用外部dll(例如實體框架項目)。

爲此,您需要創建一個繼承EF表類的類。爲了工作,您需要使用正確的模式和表名稱在類的頂部使用[Table]屬性,否則腳手架將創建一個新表。

另外請確保您使用「新」關鍵字並重載id。您將需要使用[Key]屬性(如果尚未在原始dll中的EF表中定義)。

最後創建一個新的dbcontext並確保在web.config中使用連接字符串id。

這應該允許您引用Web項目中的表和上下文。

這是我的代碼(非常簡單),希望這有助於。

namespace ConsoleAdmin.Models 
{ 
    [Table("ntf.tblNotification_ntf")] 
    public class Notification : tblNotification_ntf 
    { 
     [Key] 
     public new int notificationId { get; set; } 
    } 

    public class NotificationDbContext : DbContext 
    { 
     public NotificationDbContext(): base("name=bd_Soquij_logEntities") { } 

     public DbSet<Notification> Notifications { get; set; } 
    } 
} 
相關問題