Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将DbSet动态加载到DbContext_C#_Entity Framework_Entity Framework Core - Fatal编程技术网

C# 将DbSet动态加载到DbContext

C# 将DbSet动态加载到DbContext,c#,entity-framework,entity-framework-core,C#,Entity Framework,Entity Framework Core,如何动态地将X个类加载到EF7DbContext中,而不显式地将它们写入DbContext类中 例如,我试图这样避免它: public class MyDbContextClass : DbContext { public DbSet<Category> categories {get;set;} public DbSet<Product> products {get;set;} ... } 公共类MyDbContextClass:DbConte

如何动态地将X个类加载到EF7
DbContext
中,而不显式地将它们写入
DbContext
类中

例如,我试图这样避免它:

public class MyDbContextClass : DbContext
{
    public DbSet<Category> categories {get;set;}
    public DbSet<Product> products {get;set;}
    ...
}
公共类MyDbContextClass:DbContext { 公共数据库集类别{get;set;} 公共数据库集产品{get;set;} ... } 所以动态加载类别和产品(不知道我是否有2个或20个类)可能会很棒

有可能吗?

dbContext.Set()
创建
DbSet
的实例,只要
T
是模型中的类型(即,您必须在
OnModelCreating
中添加实体类型)


请参见

您应该使用此方法:

  • 所有实体都必须从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);
    }
    
    公共静态无效注册表属性(此ModelBuilder ModelBuilder,参数程序集[]程序集)
    {
    var types=assemblies.SelectMany(a=>a.GetExportedTypes())
    其中(c=>c.IsClass&!c.isastract&&c.IsPublic&&typeof(BaseType).IsAssignableFrom(c));
    foreach(类型中的变量类型)
    modelBuilder.Entity(类型);
    }
    

您是否将实体/类都放在一个程序集中?
context.Set()
?即使可能,这也不是一个好主意。尽管这样做确实可以。。。。我真的怀疑有人会想要这个。。。因为它没有任何好处,但我知道你在那里做了什么;-)