博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ef 吐糟
阅读量:5216 次
发布时间:2019-06-14

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

方法:从dbcontext到objectcontext

DbContext及其相关的API是中一大新特性。简单说,DbContext就是之前EF的核心类ObjectContext的抽象封装。如果用.NET Reflector看一下DbContext的内部实现,不难发现其内部有一私有成员_internalContext,它属于InternalContext这一Internal的类。DbContext内部的许多函数就是通过InternalContext.ObjectContext属性来得到其内部封装的ObjectContext类并调用其方法的。由于_internalContext是私有成员,要得到它的值需动用反射,好像太劳师动众了。今天为大家介绍十分方便的一个小技巧来得到DbContext内部封装的ObjectContext。

 

DbContext实现两个接口:IDisposable。前者的博大精深在本文就不提及了。IObjectContextAdapter按照,就是为了让我们方便得到DbContext内部封装的ObjectContext而设计的。所以很简单:

 

var context 
=
 ((IObjectContextAdapter)dbContext).ObjectContext;

 

转换一下DbContext的接口类型就行了! 

 引自  

 

方法:从 objectcontext获取字段maxLength

public static int? GetMaxLength(this EntityObject entite, string nomPropriete)    {        int? result = null;        using (XEntities contexte = XEntities.GetCurrentContext())        {            var queryResult = from meta in contexte.MetadataWorkspace.GetItems(DataSpace.CSpace)                               .Where(m => m.BuiltInTypeKind == BuiltInTypeKind.EntityType)                              from p in (meta as EntityType).Properties                                 .Where(p => p.DeclaringType.Name == entite.GetType().Name                                     && p.Name == nomPropriete                                     && p.TypeUsage.EdmType.Name == "String")                              select p.TypeUsage.Facets["MaxLength"].Value;            if (queryResult.Count() > 0)            {                result = Convert.ToInt32(queryResult.First());            }        }        return result;    }

引自  

 

 

以上均亲测可以,ef6 。

还是要忘恩负义吐槽一句

SELECT * FROM sys.columns WHERE object_id = object_id('mytable') AND name = 'mycolumn'

这样即可。

不支持就是不支持嘛,这么复杂的支持,与不支持何异。

 

转载于:https://www.cnblogs.com/baozhu/p/4861948.html

你可能感兴趣的文章
使用Python做科学计算初探
查看>>
[BZOJ4318]OSU!
查看>>
ContextLoaderListener - 运行原理
查看>>
HDU 5288 OO’s Sequence
查看>>
APP弱网测试 抓包软件就能用于模拟弱网(Fiddler、Charles)
查看>>
接口测试实例(Road)
查看>>
关于VR 应用设计的 8 个建议
查看>>
Linux inode 理解
查看>>
Python高级主题:Python ABC(抽象基类)
查看>>
VC++中CEdit控件实现回车换行
查看>>
UIKit 框架之UISegmentedControl
查看>>
hellow world
查看>>
第 14 章 结构和其他数据形式(函数指针)
查看>>
JavaScript事件机制
查看>>
深入理解HTTP协议、HTTP协议原理分析
查看>>
关于zookeeper部署的个数
查看>>
使用winmm.dll 获取麦克风声音数据
查看>>
flask 下载本地文件
查看>>
iOS开发拓展篇—UIDynamic(简单介绍)
查看>>
iOS开发UI篇—直接使用UITableView Controller
查看>>