ef 吐糟

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

这样即可。

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

时间: 2024-08-07 04:09:55

ef 吐糟的相关文章

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

前言:Adblock Plus后文都简称ABP,这是一篇ABP进阶教程!用ABP实现flashBlock和NoScript.推荐有相当基础的阅读!初学者先看懂这里:http://adblockplus.org/zh_CN/filters 先夸夸ABP,它是最流行.语法最完善严谨的过滤软件,其它同类都以它为标准!它把网络资源按以下选项分几大类: script -- 外部脚本,由 HTML script 标签加载 image -- 正常图片,通常由 HTML 的 img 标签所载入 styleshe

细数被程序员吐糟的9大困难(转)

英文原文:Arg! The 9 hardest things programmers have to do 那些非程序员认为软件开发是非常困难的,确实如此,但这种困难不像那些外行人理解的那样.最近在 Quora 上的一次讨论,程序员分享了他们认为工作中的最大困难,在这里为大家呈现出其中的 9 个.你可以看到,写代码并不是最难的事情,如果你也在从事软件开发,看看哪些内容你认为也是很难的. 1.  设计解决方案 任务描述:给你一系列的需求,你被要求设计和构造技术上的解决方案.这包括了设计数据结构,算

神吐糟:这特么到底什么玩意啊

看了这个后,我面色凝重,深深低下了头,默默的关掉手机! 起身打开冰箱,拿出一瓶伊利QQ星,紧紧握在手里,慢慢走到窗前,窗外的景色有些暗淡,就如我的心情一样,沉重,很沉重... 渐渐地,外面灰蒙蒙的天空下起了小雨,为什么会这样,视线模糊了,不知道是我流泪了还是雨太大了,可能都有吧...... 我的心情更忧郁了,我再也无法抑制内心的情感,打开窗子,对着窗外仰天长啸:这特么到底是神马玩意儿啊!

吐糟微信借钱

我由于知道微信借钱的手续费是0.05%,而提现的手续费是0.1%,于是想通过先借钱再还钱的方式把钱变相变现提现.因为我可怜的免费的1000块钱的提现额度早就用完了,真不能和支付宝比啊,支付宝真是豪爽,一下子给用户20000的免费提现额度,而且还能通过积分再兑换额度. 我抱着试一试的态度,在微信上借了500块钱,因为最少只能借500,比500少了就不能借了,钱打到银行卡上的速度确实也挺快.但是不能当天还,比如借款后的第二天才能还.比如1号借的钱,到3号才能还,这样的话利息还是0.1%,因为微信是按

玩转ASP.NET 5:前言--准备--概述

1.前言 1.1声明 遗憾前面的<ASP.NET vNext总结>系列篇没写完也不再续了.原因:一是这段时间备考压力很大,无暇顾及分享:二是觉得对vNext学习还不够深入,尽可能不误人子弟,就及时加密(密码:givecase)帖子:三是vNext技术,出于Beta阶段,技术细节还在不断变化. 强调一下:在这里和大家交流不是为了表现我多么地无私高尚,重要的是对我来说也是一个知识总结的过程.我也总是心中(呵呵,没付钱的支持,就算我虚伪吧!)感恩很多热心的园友,感谢他们的付出.不知道我心理是否健康?

DbContext API 介绍

写这篇博客的时候,听闻EF7都发布半年了,吐糟下巨硬,同时对自己老处在追赶者的角色深感不满. 言归正传,提起DbContext就不得不提ObjectContext,在EF第一个版本发布以来,其中最重要的组件就是ObjectContext,ObjectContext提供了概念上的模型来让我们与数据库交互(写查询表达式.执行查询,跟踪模型修改状态,持久化修改到数据库),他同时也与其他重要的EF类来进行交互操作: ObjectSet:在内存中对实体进行集合操作. ObjectQuery:针对概念模型的

java 和 c++ 的三目运算符的区别

以前很少用java,就知道java和c++差不多. 今天就踩了一个坑. 不吐糟,直接进正文. 看这种写法,把较小的数加1. int a = 5, b = 6; b > a ? (a = 1) : b++; 众所周知,c++这样写是没问题的. 但是java就不行! $ javac Solution.java Solution.java:14: error: not a statement b > a ? a++ : b++; ^ 1 error 上网查了资料才知道, java的表达式规定只有以下

SharpDevelop的亮点&mdash;优化提示

用惯了Visual Studio,像被惯坏了孩子,很难适应别的IDE.   上个月Win7系统崩溃了,重装后,自然VS也没了.这次下定决心,绝对不在自己电脑上用VS了,于是重新捡起SharpDevelop,晚上下班后写写小代码足够用了,以自己现在这种经验,再受IDE的局限应该很小了.   用了最新SharpDevelop 5.1后,发现其一个很不错的功能,类似VS中自动添加命名空间,或实现接口成员,不过功能更强大,除了上述功能,还可以对优化代码作出提示.   这种提示是在每行的开头,会出现有个铅

软工第0次个人作业

一.你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢? 首先说明,在进入大学之前,对于计算机专业的相关问题一无所知,对编程一无所知,对于计算机的理解仅仅存在于玩游戏和瞎捣鼓的层面上,唯一感兴趣或者自己能够想到的问题就是计算机的硬件是如何处理我们的操作指令的,软件又是通过怎样的方式写成的. 抱着这样的观点,以及相比于其他的工科专业,计算机专业给我有一种高大上的感觉,充满科技气息,再加上口耳相传的计算机专业人员在未来一定会发挥重大作用,报酬丰厚等等原因,最终选择了计算机专业,这也是我的第一