我想创建一个动态注册DBsets的代码块。我决定使用一个空接口来捕获实现该接口的类。
这是我的代码块。
var entityMethod = typeof(DbModelBuilder).GetMethod("Entity");
foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
{
var entityTypes = assembly
.GetTypes()
.Where(t =>
t.GetInterfaces().Contains(typeof(IBaseEnt))).toList();
foreach (var type in entityTypes)
{
entityMethod.MakeGenericMethod(type)
.Invoke(modelBuilder, null);
}
}但是我的种子方法不能处理我的dbset。请帮帮我。
我也尝试了这个代码块。
var entityTypes = from t in Assembly.GetExecutingAssembly().GetTypes()
where t.GetInterfaces().Contains(typeof(IBaseEnt))
&& t.GetConstructor(Type.EmptyTypes) != null
select t;发布于 2015-01-08 17:28:05
以下是解决方案。它正在EF6.1上工作。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
var entityMethod = typeof(DbModelBuilder).GetMethod("Entity");
foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
{
var entityTypes = from t in Assembly.GetExecutingAssembly().GetTypes()
where t.GetInterfaces().Contains(typeof(IBaseEnt))
&& t.GetConstructor(Type.EmptyTypes) != null
select t;
foreach (var type in entityTypes)
{
entityMethod.MakeGenericMethod(type)
.Invoke(modelBuilder, null);
}
}
base.OnModelCreating(modelBuilder);
}https://stackoverflow.com/questions/27835933
复制相似问题