繁体   English   中英

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

[英]How can I exclude Foreign Entities when calling GetProperties on an Entity?

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

以上返回CarCarReference作为属性的一部分,但它们是Person外部实体。 我想将它们从GetProperties排除。 我该如何实现?

EntityFramework POCO的设计难以确定什么是关联。 这是因为所有信息都在Entity Framework ,而这些信息都不在POCO (POCO之类)中。 您将不得不进入EF中的EDM类。

您可以通过以下方式访问我认为的EDM:

var objectContext = ((IObjectContextAdapter)dbContext).ObjectContext;
var metadata = objectContext.MetadataWorkspace;

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

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

只排除类的属性(这将排除单个导航属性)和通用类型(这将排除集合属性,例如CarICollection<Person>

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM