在dll中有一个dbContext,在另一个项目中导入它并以编程方式添加新模型/实体/表是否可行,这样你就可以与以前存在的表建立连接?
我会尝试解释为什么我想要这样的事情(可能有更好的方法)。
我想创建一个模块化应用程序,因此会有一个带有dbContext的Core.dll。我希望其他人制作模块,以便能够扩展Core dbContext。
感谢。
答案 0 :(得分:1)
如果我能正确理解,听起来你基本上想要做EF已经做过的事情。首先使用代码至少有几种方法可以做到这一点。我喜欢使用EntityTypeConfiguration方法(而不是流畅的API)来构建我的对象模型。在您的情况下,这可能看起来像这样:
using System.Data.Entity;
using System.Data.Entity.ModelConfiguration;
using CoreNamespace;
namespace CoreNamespace
{
public class MyDbContext:DbContext
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
}
modelBuilder.Configurations.Add(new CoreEntityConfiguration());
}
}
public class CoreEntity
{
//list properties, methods, etc
}
public class CoreEntityConfiguration : EntityTypeConfiguration<CoreEntity>
{
public CoreEntityConfiguration()
{
//configure entity and map to db
}
}
namespace ExtendingProjectNamespace
{
public class MyExtendedDbContext : MyDbContext
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Configurations.Add(new SubEntityConfiguration());
}
}
public class SubEntity
{
//list properties, methods, etc
}
public class SubEntityConfiguration : EntityTypeConfiguration<SubEntity>
{
public SubEntityConfiguration()
{
//configure entity and map to db
}
}
}
此处的命名空间旨在引用单独的项目/ dll