从数据库中读取的实体,有导航属性的话,该属性通过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;