zoukankan      html  css  js  c++  java
  • 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'

    这样即可。

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

  • 相关阅读:
    凤凰网CEO刘爽称鄙视微博连说20个屁示不齿
    科技创业网站
    梦想,在路上
    小本创业
    rails relevent
    MBA = married but available
    把UTF8编码转换为GB2312编码[转]
    FSFS和VDFS存储方式的区别
    如何让phpmyadmin输入密码再进入
    dede后台登陆后一片空白的解决办法汇总
  • 原文地址:https://www.cnblogs.com/baozhu/p/4861948.html
Copyright © 2011-2022 走看看