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'

    这样即可。

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

  • 相关阅读:
    hdu2328 Corporate Identity
    hdu1238 Substrings
    hdu4300 Clairewd’s message
    hdu3336 Count the string
    hdu2597 Simpsons’ Hidden Talents
    poj3080 Blue Jeans
    poj2752 Seek the Name, Seek the Fame
    poj2406 Power Strings
    hust1010 The Minimum Length
    hdu1358 Period
  • 原文地址:https://www.cnblogs.com/baozhu/p/4861948.html
Copyright © 2011-2022 走看看