我有两个项目内部vs解决方案
Product.Domain
和Product.Web.UI
在这两个项目中,我想使用代码优先方法,并能够使用数据(域和UI项目)。
所以我创建了内部项目简单类,它实现了DbContext 我有两个项目,Product.Domain和Product.UI
我正在使用实体框架代码第一种方法。在MasterProject内部,我有一个代表db table Products
的类public class ProductsDbContext : DbContext{
public ProductsDbContext() : base("name=ProductsDbContext") { }
}
在我的app.config中,我有连接字符串ProductsDbContext,它处理与db的连接。
现在我想在UI项目中使用ApplicationDbContext,它应该使用来自域层的相同数据库和存储标识表(在创建域层时数据库中最初不存在) 我试图在web.config连接字符串中设置ProductsDbContext并在ApplicationDbContext构造函数中使用,如
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("name=ProductsDbContext") { }
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
}
我应该如何继续在Configuration.cs Seed()中使用ApplicationDbContext,以便将样本用户和样本Product存储在ProductsDbContext中定义的同一个数据库中。
我正在寻找更多描述这个解决方案,当数据库最初在一个项目(域)中创建时,而不是在不同项目中再次使用,并且可能使用新表(ui)进行更新。这是正确的方法吗?分享的任何例子?
答案 0 :(得分:0)
如果你想在2个单独的项目中使用2个DbContexts,它们将永远脱节。
E.g。您将无法执行以下操作:
Context1.Users.Where(u => Context2.Products.Any(p => p.User == u))
因此,您将失去在两个数据库中使用联接的能力。
种子数据的一种方法是使用conde首次迁移,将它们指向两个项目,例如:
Enable-Migrations
Enable-Migrations
项目在visual studio中,在Package Manager控制台中,您可以选择要定位的项目。
然后,您可以在相应的项目Configuration.cs
中添加迁移和种子数据。