在多个项目中分离DbContext

时间:2013-10-25 23:29:46

标签: entity-framework asp.net-mvc-4

我创建了一个公司MVC4“模板”,其中包含基本帮助器,用户功能等,只是每个项目所需的东西。

现在我试图将由{3}部分组成的Users部分分开:控制器/模型/视图,业务层和数据层。

现在我遇到了这个问题,我拿出了数据层部分并将其放在一个单独的项目中,该项目将成为一个私有的Nuget包。

但是程序包不会知道DbContext,因为它位于实际项目网站的DataLayer中。

该网站的DbContext目前如下所示:

public class DataContext : DbContext
{
    ....
    public DbSet<Language> Languages { get; set; }
    public DbSet<User> Users { get; set; }
    ....
    public DbSet<Reservation> Reservations { get; set; }
    ....
}

LanguagesUsers将放在单独的项目/ NuGet包中,Reservations将保留在网站上,因为它是特定于网站的。

LanguagesUsers表没有相互引用,但Reservations引用了UserLanguage

这里有哪些选项可以保持完整的Code-First模型,包括迁移。我可以单独为每个项目/ NuGet创建多个DbContext,代码优先迁移能够选择这个,还是有更好的方法?

1 个答案:

答案 0 :(得分:1)

如果您的预订包含语言和用户类的链接,那么您将必须使用相同的上下文。

如果你想要更松散耦合的实现,那么只需要包含ID而不是实际的类,那么你可以使用单独的上下文,但是你将无法轻松引用对象等等。实施实际上取决于您的项目有多大以及您计划如何更新解决方案。