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

时间:2013-10-14 13:48:31

标签: c# entity-framework .net-3.5

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

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

2 个答案:

答案 0 :(得分:0)

EntityFramework POCO旨在难以找出什么是关联。这是因为所有信息都在Entity Framework中,并且这些信息都不在POCO中(POCO点的类型)。你必须进入EF的EDM课程。

您可以通过

访问我认为的EDM
var objectContext = ((IObjectContextAdapter)dbContext).ObjectContext;
var metadata = objectContext.MetadataWorkspace;

但这是我能为你做的最好的......

答案 1 :(得分:0)

嗯,这是一个质朴的解决方案,但它可能足以满足您的需求。

只需排除属于类的属性(这将排除单个导航属性)和泛型类型(这将排除集合属性,例如ICollection<Person>中的Car

var properties = typeof(Items).GetProperties(BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.Instance)
                .Where(m => !m.PropertyType.IsClass && 
                            !m.PropertyType.IsGenericType);