如何在实体上调用 GetProperties 时排除外部实体

本文关键字:实体 排除 外部 GetProperties 调用 | 更新日期: 2023-09-27 18:35:12

var properties = person.GetType().GetProperties(BindingFlags.DeclaredOnly |
                                                    BindingFlags.Public |
                                                    BindingFlags.Instance);

上面返回CarCarReference作为属性的一部分,但这些是要Person的外来实体。 我想将它们排除在GetProperties.我怎样才能做到这一点?

如何在实体上调用 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);