实体框架获取包含一些值的属性

时间:2016-08-16 07:46:44

标签: c# entity-framework reflection

我有一个迭代对象所有属性的方法。我正在记录这些属性:

Object obj = entry.Entity;
Type type = obj.GetType();
PropertyInfo[] properties = type.GetProperties();

 foreach (PropertyInfo property in properties)
 {
     oldData.AppendFormat("{0}={1} || ", property.Name, property.GetValue(obj, null));
 }

现在这个工作正常但是在我的表日志中,它也在下面编写这个属性:

- PremiumReference=System.Data.Objects.DataClasses.EntityReference`1[Data.Premium]
- EntityState=Deleted
- EntityKey=System.Data.EntityKey

我有什么想法可以过滤这些属性吗?

1 个答案:

答案 0 :(得分:1)

我用以下代码解决了我的问题:

PropertyInfo[] properties = obj.GetType().GetProperties(BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.Instance)
            .Where(pi => !(pi.PropertyType.IsSubclassOf(typeof(EntityObject))) && !(pi.PropertyType.IsSubclassOf(typeof(EntityReference))))
            .ToArray();

BindingFlags确实有帮助,但我不想要EntityReferenceEntityObject所以我需要添加where子句。

How to get all names of properties in an Entity?