博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DbContext运行时动态附加上一个dbset
阅读量:5896 次
发布时间:2019-06-19

本文共 1704 字,大约阅读时间需要 5 分钟。

参考

C# code
1
DbSet<MyEntity> 
set 
= context.Set<MyEntity>();

C# code
1
DbSet 
set 
= context.Set( 
typeof
( MyEntity ) );

或者利用反射,通过实现DbContext的OnModelCreating方法,参考

引用
However, for a project with even a fair bit of domain complexity, defining DbSet properties for all entities would not be possible and we need a way to dynamically read our Entity Types and add them dynamically in the DbContext. This can be achieved by implementing OnModelCreating method of the DbContext. The Entity Types can be read from either the executing assembly Assembly.GetExecutingAssembly() or by loading more than one assemblies which can be placed in a configuration file (as shown below in the example). For details about setting up the custom configuration section with your assemblies see my last post
The following code will add all Class Types to the DbContext for all the assemblies added in the configuration file, notice we are actually calling modelBuilder.Entity<T>() method through reflection.
C# code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public 
class 
MyAppContext : DbContext
    
{
        
protected 
override 
void 
OnModelCreating(DbModelBuilder modelBuilder)
        
{
            
CustomAssemblySection configSection = (CustomAssemblySection)System.Configuration.ConfigurationManager.GetSection(
"CustomAssemblySection"
);
  
 
            
foreach 
(CustomAssembly customAssembly 
in 
configSection.Assemblies)
            
{
                
Assembly assembly = Assembly.Load(customAssembly.Name);
                
foreach 
(Type type 
in 
assembly.ExportedTypes)
                
{
                    
if 
(type.IsClass)
                    
{
                        
MethodInfo method = modelBuilder.GetType().GetMethod(
"Entity"
);
                        
method = method.MakeGenericMethod(
new 
Type[] { type });
                        
method.Invoke(modelBuilder, 
null
);
                    
}
                
}
            
}
            
base
.OnModelCreating(modelBuilder);
        
}
    
}

转载地址:http://cvxsx.baihongyu.com/

你可能感兴趣的文章
单例模式
查看>>
【C语言学习】《C Primer Plus》第7章 C控制语句:分支与跳转
查看>>
按键的硬件消抖小结
查看>>
Neo4j之Cypher学习总结
查看>>
我在软件开发中应该注意的地方
查看>>
阿里云服务器(Ubuntu16.04 64位)的使用
查看>>
cobbler
查看>>
shell算术运算与进制运算
查看>>
spark2.3在window10当中来搭建python3的使用环境pyspark
查看>>
find命令
查看>>
rel是有进有出,out是只出不进
查看>>
update sharepoint 2013 cu error
查看>>
获取webpart方法以及连接字符串记录
查看>>
关于互联网上面使用的密码
查看>>
EntityFramework外健的读写
查看>>
老男孩blog博文内容列表整理(博文索引)
查看>>
proc/sys/net 详解(即时调整内核网络参数)
查看>>
从技术到管理,艰难的转型
查看>>
SystemCenter2012SP1实践(17)更多的定制模板
查看>>
Microsoft UC 2013 Preview-3-Deploy Microsoft SharePoint Server 2013
查看>>