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

这样即可。

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

ef 吐糟的更多相关文章

  1. 点赞和吐糟Adblock Plus~进阶教程

    前言:Adblock Plus后文都简称ABP,这是一篇ABP进阶教程!用ABP实现flashBlock和NoScript.推荐有相当基础的阅读.刚開始学习的人先看懂这里:http://adblock ...

  2. MVC Core 网站开发(Ninesky) 2.1、栏目的前台显示(补充)

    在2.1.栏目的前台显示中因右键没有添加视图把微软给鄙视了一下,后来有仔细研究了一下发现应该鄙视自己,其实这个功能是有的,是自己没搞清楚乱吐糟. 其实只要在NuGet中安装两个包(Microsoft. ...

  3. MVC Core 网站开发(Ninesky) 2.1、栏目的前台显示

    上次创建了栏目模型,这次主要做栏目的前台显示.涉及到数据存储层.业务逻辑层和Web层.用到了迁移,更新数据库和注入的一些内容. 一.添加数据存储层 1.添加Ninesky.DataLibrary(与上 ...

  4. web音乐播放器总结

    前言 项目暂时告一段落,胸中有股炽热之气望喷涌而出!忍不住吐槽,为什么程序员要加班啊,为什么产品下达deadline,就得把这生死剑架在程序员的脖子上.卧槽,听说程序员在国外是叫工程师的.最近看了很多 ...

  5. webapp应用---cordova.js 3.7.0插件安装总结

    今天是2014年的最后一天,年终总结什么的就不写了.记录一下今天的工作内容.如果不知道phoneGap,那么就不需要往下看了,phoneGap现在已经叫cordova了,叫什么不重要,重要的是它对we ...

  6. an interview question(4)

    版权声明:本文为博主原创文章,未经博主允许不得转载. 写这篇博客前请让博主先吐糟下自己的PC. i3+2G内存+开了一上午=C盘剩下0字节+打开VS2012花了半个小时+一晚上的心情不好 吐槽完PC, ...

  7. SharpDevelop的亮点—优化提示

    用惯了Visual Studio,像被惯坏了孩子,很难适应别的IDE.   上个月Win7系统崩溃了,重装后,自然VS也没了.这次下定决心,绝对不在自己电脑上用VS了,于是重新捡起SharpDevel ...

  8. Discrete.Differential.Geometry-An.Applied.Introduction(sig2008)笔记

    -------------------------------------------------------------- Chapter 1: Introduction to Discrete D ...

  9. windows 版的julia repl 启动时间已经大大优化!

    julia 是一门语法类似python 偏向主要用于科学计算的语言,julia吸收了很多其它语言的优点,内置了大量函数,使用起来很方便. 之前windows下的 julia repl(交互解释器)启动 ...

随机推荐

  1. 支付宝异步通知(notify_url)与return_url.

    支付宝接口使用文档说明 支付宝异步通知(notify_url)与return_url. 现支付宝的通知有两类. A服务器通知,对应的参数为notify_url,支付宝通知使用POST方式 B页面跳转通 ...

  2. JAVA 第四章 数组

    数组保存的是一组有顺序的.具有相同类型的数据. 1.创建: 数组的声明格式: int arrary[]; int [] array1, array2; //同时声明多个数组. 上面的语句只是对数组进行 ...

  3. day03用户交互、基本数据类型、运算符

    用户交互 在实际应用中,我们经常需要用户输入相应信息,根据用户输入信息进行反馈,此时我们需要input/output信息 python中提供了便捷的输入方法input()和print() 在pytho ...

  4. C语言--第二周作业评分和总结(5班)

    作业链接:https://edu.cnblogs.com/campus/hljkj/CS2017-5/homework/1026 一.评分要求 要求1 阅读指定博客+阅读收获+例子.(5分) 要求2 ...

  5. Python的方法和语法解释

    ---------------------------------------------------------------------------------------------------- ...

  6. json/pickle模块(序列化)

    什么叫序列化? 序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes 为什么要序列化? 你打游戏过程中,打累了,停下来,关掉游戏.想 ...

  7. 流程控制之if

    流程控制 假如把写程序比做走路,那我们到现在为止,一直走的都是直路,还没遇到过分叉口,想象现实中,你遇到了分叉口,然后你决定往哪拐必然是有所动机的.你要判断那条岔路是你真正要走的路,如果我们想让程序也 ...

  8. java中的Object类和其clone()

    1.Object是所有类的父类,任何类都默认继承Object,即直接或间接的继承java.lang.Object类.由于所有的类都继承在Object类,因此省略了extends Object关键字. ...

  9. Gravitee.io api gateway 试用

    以前写过几篇关于整体介绍的以及 使用docker 运行的简单说明,有了docker-compose 环境我们可以 方便的进行测试使用了. 环境准备 docker-compose 文件   versio ...

  10. Gravitational Teleport简单使用

    使用官方提供的二进制包进行快速启动测试,详细细节还需要在学习 下载软件包 mac 系统 https://gravitational.com/teleport/download/ wget https: ...