方法:从dbcontext到objectcontext

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

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

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

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

引自 http://www.cnblogs.com/LingzhiSun/archive/2011/03/30/EF_Trick1.html

方法:从 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;
}

引自 http://stackoverflow.com/questions/748939/field-max-length-in-entity-framework

以上均亲测可以,ef6 。

还是要忘恩负义吐槽一句

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

这样即可。

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

最新文章

  1. 03 通过Button打开另一个的frm
  2. 面试问题-使用Java线程做数学运算
  3. 不安装Oracle客户端使用PLSQL
  4. hdu 2065
  5. PHP mcrypt加密扩展使用总结
  6. Samba实现Linux与Window文件的传输
  7. 187. Repeated DNA Sequences
  8. [Raobin] Ext.net在页面中以窗体的形式打开另外的页面
  9. oracle常用自定义函数集合
  10. 面试题-Java基础-线程部分
  11. 利用PN532读取二代证UID
  12. Swift -欢迎界面1页, 延长启动图片的显示时间(LaunchImage)
  13. 关于 Ubuntu Linux 16.04中文版的 root 权限及桌面登录问题
  14. SQL优化总结之二
  15. 使用boost.python封装C++库
  16. 10个最佳 Javascript+HTML5 演示文稿框架
  17. Spring SpringBoot和SpringCloud的关系
  18. 基于单片机的Wifi温度湿度测量仪
  19. JVM调优命令-jstat
  20. spring boot 学习(五)SpringBoot+MyBatis(XML)+Druid

热门文章

  1. 关于Q-LEARNING的优化
  2. BF字符串匹配算法
  3. Samsung_tiny4412(驱动笔记06)----list_head,proc file system,GPIO,ioremap
  4. 解决cocos2dx调用removeFromParent后报错问题
  5. C#语法-虚方法详解 Virtual 虚函数
  6. Sublime Text3:插件+快捷键+环境变量设置+C/C++编译环境
  7. putty 、xshell的使用 和 putty 、xshell、 shell 间免密登陆
  8. Hadoop权威指南
  9. ubuntu设置静态ip后不能上网
  10. Redis和MySQL的结合方案