entity 如何为dbcontext运行时动态附加上一个dbset

问题描述

类似这样publicclassDefaultDBContext:DBContext{publicDbSet<User>User{get;set;}..........}

需要动态增加类似这个user的entity我现在只知道它的type的string;想用dbcontext读取这个未知实体的数据,有什么思路吗

解决方案

解决方案二:
参考DbSet<MyEntity>set=context.Set<MyEntity>();

或DbSetset=context.Set(typeof(MyEntity));

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

However,foraprojectwithevenafairbitofdomaincomplexity,definingDbSetpropertiesforallentitieswouldnotbepossibleandweneedawaytodynamicallyreadourEntityTypesandaddthemdynamicallyintheDbContext.ThiscanbeachievedbyimplementingOnModelCreatingmethodoftheDbContext.TheEntityTypescanbereadfromeithertheexecutingassemblyAssembly.GetExecutingAssembly()orbyloadingmorethanoneassemblieswhichcanbeplacedinaconfigurationfile(asshownbelowintheexample).FordetailsaboutsettingupthecustomconfigurationsectionwithyourassembliesseemylastpostThefollowingcodewilladdallClassTypestotheDbContextforalltheassembliesaddedintheconfigurationfile,noticeweareactuallycallingmodelBuilder.Entity<T>()methodthroughreflection.

publicclassMyAppContext:DbContext{protectedoverridevoidOnModelCreating(DbModelBuildermodelBuilder){CustomAssemblySectionconfigSection=(CustomAssemblySection)System.Configuration.ConfigurationManager.GetSection("CustomAssemblySection");foreach(CustomAssemblycustomAssemblyinconfigSection.Assemblies){Assemblyassembly=Assembly.Load(customAssembly.Name);foreach(Typetypeinassembly.ExportedTypes){if(type.IsClass){MethodInfomethod=modelBuilder.GetType().GetMethod("Entity");method=method.MakeGenericMethod(newType[]{type});method.Invoke(modelBuilder,null);}}}base.OnModelCreating(modelBuilder);}}

时间: 2024-10-26 21:08:18

entity 如何为dbcontext运行时动态附加上一个dbset的相关文章

LINQ to SQL运行时动态构建查询条件

在进行数据查询时,经常碰到需要动态构建查询条件.使用LINQ实现这个需求可能会比以前拼接SQL语 句更麻烦一些.本文介绍了3种运行时动态构建查询条件的方法.本文中的例子最终实现的都是同一个功 能,从Northwind数据库Customers表中搜索出CompanyName列带有keywords中任意元素的项.keywords是 个字符串数组,该数组长度在编译时是不确定的.思路及方法说明写在代码注释中. 1.表达式树 1 public static IEnumerable<Customers>

[开发故事]第四回:应用反射在运行时动态获取类型信息

引言 网友hbfly,对于我在[你必须知道的.NET]第三十回:.NET十年(下)一文中 关于"当应用attribute进行运行时反射"的论述,希望举例说明,他提出了自己 的想法:[你必须知道的.NET]第二十四回:认识元数据和IL(上)[你必须知道的.NET]第二十五回:认识元数据和IL(中)[你必须知道的.NET]第二十六回:认识元数据和IL(下) [MyAttribute("text.....")] public mymethod() { //我可以再方法内部

php运行时动态创建函数的方法

 这篇文章主要介绍了php运行时动态创建函数的方法,涉及php流程语句与create_function函数的使用技巧,需要的朋友可以参考下     本文实例讲述了php运行时动态创建函数的方法.分享给大家供大家参考.具体分析如下: 一般的语言函数必须定义了在运行,而php支持在运行时动态创建函数,下面是一个简单的范例,在运动时根据不同的条件创建函数$a ? 1 2 3 4 5 6 7 8 9 10 11 <?php if (count($_POST) > 0) { $prepped = cre

php运行时动态创建函数的方法_php技巧

本文实例讲述了php运行时动态创建函数的方法.分享给大家供大家参考.具体分析如下: 一般的语言函数必须定义了在运行,而php支持在运行时动态创建函数,下面是一个简单的范例,在运动时根据不同的条件创建函数$a <?php if (count($_POST) > 0) { $prepped = create_function('$a', 'return trim($_POST[$a]);'); } elseif (count($_GET) > 0) { $prepped = create_f

如何在程序运行时动态修改一个类的属性的get;set;?

问题描述 publicclassMyTestClass{privatestring_name;publicstringName{get{returnstring.Format("名字:{0}",_name);}set{value=value??string.Empty;_name=value.Substring(0,4);}}}publicstaticvoidMain(){DynamicMethodmethod=newDynamicMethod("Set_Name"

mfc-vs2003编译的程序运行时总是多出一个无用的窗口,求解

问题描述 vs2003编译的程序运行时总是多出一个无用的窗口,求解 vs2003编译的程序运行时总是多出一个无用的窗口,就是在任务上多出一个没有标题,点击有不出现任何窗口的那么一个东西,不知道是什么,求解!

j rame-javax.swing.JFrame? 关闭时怎么回到上一个窗口

问题描述 javax.swing.JFrame? 关闭时怎么回到上一个窗口 javax.swing.JFrame? J1: javax.swing.JFrame J2; 其中,j2是在j1中创建的,我想在J2关闭时,回到J1上,要怎么做?

安卓开发-安卓做侧滑菜单时关于返回上一个状态的方法

问题描述 安卓做侧滑菜单时关于返回上一个状态的方法 用fragment写的一个侧滑菜单,侧滑菜单页有几个按钮,点击按钮可以跳转到其他activity,想让它返回的时候能返回到上一个状态 解决方案 你要做到两点,首先你在跳转到其它activity的时候当前的activity不要finish();然后就是你在切换fragment的时候是使用fragmentTransaction.hide(fragment)隐藏而不是直接清空,这样回来的时候才会调用原来的fragment 解决方案二: 楼上是对的,不

Asp.Net中页面运行时动态载入的UserControl内元素的事

在Asp.Net页面的开发过程中,我们肯定经常会用到自定义的UserControl来复用部分页面元素,我们有两种使用UserControl的方式 1.在设计时往页面里添加需要的UserControl(最常用的就是从SolutionExplorer拖ascx到设计页面) 此种情况下,如果将UserControl放置在runat=server的html标签中,将可能导致UserControl内的元素事件处理不能正确执行. 例如:我们有时用一个div作为边框包含了需要的UserControl,而出于在