C# DBSet使用接口动态注册

C# DBSet使用接口动态注册,c#,asp.net,entity-framework,dbcontext,dbset,C#,Asp.net,Entity Framework,Dbcontext,Dbset,我想创建一个动态注册dbset的代码块。 我决定使用一个空接口来捕获实现该接口的类 这是我的代码块 var entityMethod = typeof(DbModelBuilder).GetMethod("Entity"); foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies()) { var entityTypes = assembly

我想创建一个动态注册dbset的代码块。 我决定使用一个空接口来捕获实现该接口的类

这是我的代码块

 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);
                }
            }
var entityTypes = from t in Assembly.GetExecutingAssembly().GetTypes()
                                  where t.GetInterfaces().Contains(typeof(IBaseEnt))
                                           && t.GetConstructor(Type.EmptyTypes) != null
                                  select t;
但是我的种子方法不能处理我的dbset。请帮帮我

我也试过这个代码块

 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);
                }
            }
var entityTypes = from t in Assembly.GetExecutingAssembly().GetTypes()
                                  where t.GetInterfaces().Contains(typeof(IBaseEnt))
                                           && t.GetConstructor(Type.EmptyTypes) != null
                                  select t;

这是解决办法。它正在开发EF 6.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);
        }