zoukankan      html  css  js  c++  java
  • Entityframework实体中的导航属性,通过GetCustomAttributes无法判断特性是否存在

    从数据库中读取的实体,有导航属性的话,该属性通过GetCustomAttributes无法判断特性是否存在(如:ForeignKey)

    获取到的GetCustomAttributes.Length为零

    如果要判断,请用Attribute.IsDefine

    原因可能是:

    EF的导航属性延时加载(LazyLoad)以后,属性的类型被EF重写了,类型从:ActivityIntroduction变为了DynamicProxies

     名称类型
    DeclaringType {Name = "ActivityIntroduction_B088226646DE0E9842FB0E0C98C7DB6E2AE98BCC9D08ECE04124FD7E9322897C" FullName = "System.Data.Entity.DynamicProxies.ActivityIntroduction_B088226646DE0E9842FB0E0C98C7DB6E2AE98BCC9D08ECE04124FD7E9322897C"} System.Type {System.RuntimeType}

    可以通过BaseType到基类

    var type = entity.GetType();
    //如果是ef的类型则取它的基类
    type = type.Namespace == "System.Data.Entity.DynamicProxies" ? type.BaseType: type;
  • 相关阅读:
    深拷贝与浅拷贝
    ifconfig命令不可用
    多边形裁剪问题
    ps aux命令后的内容
    STL sort的危险之处
    jdk与jre的区别
    #与##的用法
    投影选择的一般原则
    关于函数中内存操作
    js生成新加坡的NRIC号码
  • 原文地址:https://www.cnblogs.com/yeagen/p/12713435.html
Copyright © 2011-2022 走看看