c# - 混合模型优先和代码优先

标签 c# asp.net-mvc entity-framework entity

我们使用模型优先方法创建了一个网络应用程序。一位新开发人员加入了该项目,并使用代码优先方法(使用数据库文件)创建了一个新的自定义模型。

这是代码优先的数据库上下文。

namespace WVITDB.DAL
{
public class DashboardContext : DbContext
{
    public DbSet<CTOReview> CTOReviews { get; set; }
    public DbSet<Concept> Concepts { get; set; }

    //public DashboardContext()
    //    : base("name=DashboardContext")
    //{

    //}


  //  protected override void OnModelCreating(DbModelBuilder modelBuilder)
   // {
   //     //modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
   // }
}
}

以下 Controller 方法抛出错误 Could not find the conceptual model type for 'WVITDB.Models.FavoriteProject'. 并引用原始数据库模型。我们不确定为什么(或如何)调用它。

  public ViewResult Index()
        {
            var d = db.Concepts.ToList(); //Throws error here
            return View("Index",d);
        }

当 DashboardContext 类被实例化时,两个 DBset 属性都会出现错误。

Controller 调用错误的数据库是否有原因?

编辑:

FavoriteProject 处于不同的上下文(我们的主要数据模型)中,与新的自定义模型无关。

最佳答案

已找到答案,但可能不是您想听到的:

http://social.msdn.microsoft.com/Forums/en-US/adodotnetentityframework/thread/d2a07542-cb33-48ba-86ed-4fdc70fb3f1a

“如果您使用 EDMX 文件的默认代码生成,则生成的类包含一系列属性,以帮助 EF 找到为每个实体类型使用哪个类。EF 目前有一个限制,即 POCO 类不能从包含具有 EF 属性的类的程序集中加载。(简短的回答是否定的,您的类需要在单独的项目中)。

这是一个有点人为的限制,我们意识到这是痛苦的,将来会尝试删除。”

因此解决方法是将类拆分为两个不同的程序集。

关于c# - 混合模型优先和代码优先,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6899567/

相关文章:

asp.net-mvc - 自动检测所有模型到脚手架

mysql - 带有 MySQL 的 Entity Framework

entity-framework - Entity Framework 5 : How to Outer Join Table Valued Function

c# - 复合键 Entity Framework 7“属性无法添加到实体类型

c# - 名称/值 .NET 集合或 .NET 名称/值字典?

jquery - MVC3 - 如何维护回发时的选项卡索引

c# - 将具有定义类型的通用接口(interface)注册为没有类型的通用接口(interface)有什么区别?

用于开发应用程序的 Asp.net mvc 与 Angular JS

c# - 在 Resharper 中为对象和数组初始化程序获取正确的缩进

c# - 如何在 ASP.NET WebForms 中显示用户控件列表