先混合模型,然后先编码

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

这是代码第一个数据库上下文。

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>();
   // }
}
}

以下控制器方法引发错误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);
        }

当DashboardContextclass被实例化时,两个DBset属性都会显示错误。

控制器调用错误的数据库是否有原因?

编辑:

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


找到了答案,但它可能不是你想要听到的:

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

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

这是一种有些人为的限制,我们认识到的东西是痛苦的,将来会尝试去除。“

所以解决方法是将这些类拆分成两个不同的程序集。


ajpaz - 您可能必须以编程方式将现有模型“映射”到数据库表。 我从错误消息中假设它正在寻找FavouriteProject表/类映射。 也许数据库有这个定义为单数,在这种情况下尝试:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<FavouriteProjects>().ToTable("FavouriteProject");
}

你还需要按照上面的方法做一个dbset(或者一些复数的排列):

public DbSet<FavouriteProjects> FavouriteProjects{ get; set; }

可能是几英里之外,只是一个想法

[编辑] - overiding在web.config中的代码1的DbContext(下的ConnectionStrings [名称必须与您的DbContext名):

<add name="DashboardContext" connectionString="Data Source=remote.sqlserver.server;Initial Catalog=code_first_db;Persist Security Info=True;MultipleActiveResultSets=True;User ID=code_first_db_user;Password=password" providerName="System.Data.SqlClient"/>
链接地址: http://www.djcxy.com/p/8755.html

上一篇: Mixing Model first and Code first

下一篇: MongoDB / C# Driver and Memory Issue