目前我正在尝试将 Entity Framework 6.3 与一种分布式模型一起使用。我的问题是,我想在不同的程序集中分离模型(例如核心应用程序和插件)。
现在我正在寻找一种方法,让我的应用程序通过反射或类似的东西获取所有模型,并在启动前在 ef db 上下文中注册所有模型。
Entity Framework 6 可以做到这一点吗?
谢谢。
最佳答案
您可以通过反射在每个装配体中搜索您的模型。
遍历 AppDomain 的程序集并搜索属性、接口(interface)或基类,请参见下面的示例。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
var entityMethod = typeof(DbModelBuilder).GetMethod("Entity");
foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
{
var entityTypes = assembly
.GetTypes()
.Where(t =>
t.GetCustomAttributes(typeof(PersistentAttribute), inherit: true)
.Any());
foreach (var type in entityTypes)
{
entityMethod.MakeGenericMethod(type)
.Invoke(modelBuilder, new object[] { });
}
}
}
关于c# - 在不同的程序集上分布 Entity Framework 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30900372/