如何使用引用的程序集进行控制器脚手架

时间:2015-09-17 13:00:12

标签: c# asp.net-mvc entity-framework-6 asp.net-mvc-scaffolding

我有一个包含一些模型类和一个DbContext类的类库(所有这些类都是公共的)。该类库由MVC-5应用程序引用。

是否可以使用该引用类库中的模型类来构建该MVC-5应用程序中的控制器?

当我使用控制器 - 添加 - 控制器 - 带视图的MVC控制器时,使用实体框架然后在对话框中为模型类数据上下文组合框class 不包含任何项目。当我从引用的类库中填写类的完全限定名称时,仍然禁用添加按钮。我做错了什么?

enter image description here

2 个答案:

答案 0 :(得分:1)

通过一些调整,您可以使用脚手架引用外部dll(例如实体框架项目)。

为此,您需要创建一个继承EF表类的类。为了工作,您需要使用具有正确模式和表名的类顶部的[Table]属性,否则scaffolding将创建一个新表。

另外请确保使用" new"关键字和重载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; }
    }
}

答案 1 :(得分:0)

将引用的程序集编译为dll-file的脚手架根本不起作用。有必要添加对包含模型类的项目的引用。然后它按预期工作。 这是一个错误还是一个功能?