如何在实体上调用 GetProperties 时排除外部实体
本文关键字:实体 排除 外部 GetProperties 调用 | 更新日期: 2023-09-27 18:35:12
var properties = person.GetType().GetProperties(BindingFlags.DeclaredOnly |
BindingFlags.Public |
BindingFlags.Instance);
上面返回Car
和CarReference
作为属性的一部分,但这些是要Person
的外来实体。 我想将它们排除在GetProperties
.我怎样才能做到这一点?
EntityFramework
POCO
被设计为很难弄清楚什么是关联。这是因为所有信息都在Entity Framework
,而这些信息都不在POCO
中(POCO的点)。您必须进入 EF 中的 EDM 类。
我认为您可以访问EDM...通过
var objectContext = ((IObjectContextAdapter)dbContext).ObjectContext;
var metadata = objectContext.MetadataWorkspace;
但这是我能为你做的最好的事情...
嗯,一个质朴的解决方案,但它可能足以满足您的需求。
只需排除类属性(这将排除单个导航属性)和泛型类型(这将排除集合属性,例如 Car
中的ICollection<Person>
)
var properties = typeof(Items).GetProperties(BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.Instance)
.Where(m => !m.PropertyType.IsClass &&
!m.PropertyType.IsGenericType);