首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DBSet使用接口动态注册

DBSet使用接口动态注册
EN

Stack Overflow用户
提问于 2015-01-08 16:38:40
回答 1查看 247关注 0票数 0

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

这是我的代码块。

代码语言:javascript
复制
 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。请帮帮我。

我也尝试了这个代码块。

代码语言:javascript
复制
var entityTypes = from t in Assembly.GetExecutingAssembly().GetTypes()
                                  where t.GetInterfaces().Contains(typeof(IBaseEnt))
                                           && t.GetConstructor(Type.EmptyTypes) != null
                                  select t;
EN

回答 1

Stack Overflow用户

发布于 2015-01-08 17:28:05

以下是解决方案。它正在EF6.1上工作。

代码语言:javascript
复制
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);
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27835933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档