如何动态加载到EF7 DbContext
X个类而不在DbContext
类中明确写入它们?
例如,我试图像这样避免它:
public class MyDbContextClass : DbContext
{
public DbSet<Category> categories {get;set;}
public DbSet<Product> products {get;set;}
...
}
因此,动态加载类别和产品可能会很棒(不知道我是否有2或20个类)。
有可能吗?
答案 0 :(得分:1)
dbContext.Set<T>()
是模型中的类型, DbSet<T>
就会创建T
的实例(即您必须在OnModelCreating
中添加实体类型)。
答案 1 :(得分:1)
您应该使用此方法:
所有实体都必须继承自BaseType ...
public static void RegisterAllEntities<BaseType>(this ModelBuilder modelBuilder, params Assembly[] assemblies)
{
var types = assemblies.SelectMany(a => a.GetExportedTypes())
.Where(c => c.IsClass && !c.IsAbstract && c.IsPublic && typeof(BaseType).IsAssignableFrom(c));
foreach (var type in types)
modelBuilder.Entity(type);
}