【发布时间】:2017-09-05 14:25:58
【问题描述】:
我用一些额外的元数据注释了我的 Entity Framework Code First 对象,例如 DataTypeAttribute 或可能是新的自定义属性。一旦我拥有 EF Code First POCO 对象的 Type 对象,此代码的一个版本(来自 http://www.minddriven.de/index.php/technology/dot-net/web/asp-net-mvc/check-data-annotations-from-code)可以很好地读取属性。
但是,我不知道如何从 MetadataWorkspace 中找到所有实体:
ObjectContext objContext = ((IObjectContextAdapter)this).ObjectContext;
MetadataWorkspace mw = objContext.MetadataWorkspace;
var entities = mw.GetItems<EntityType>(DataSpace.OSpace);
到我需要反映在属性上的 POCO 类类型。
如何从EntityType 获取 POCO 对象或其代理?或者,如何在没有 GetItems() 的情况下找到上下文中的所有 POCO 对象?
相关链接:
【问题讨论】:
-
无法在运行时向现有类型定义添加自定义属性 (ttbomk)。为了装饰您的实体,您必须在定义它们的源文件中这样做(或通过创建关联类型来仅保存元数据/属性注释,以防直接编辑源文件不是一种选择;对于 EF 代码-首先你不应该有这个问题)。
-
对不起,我不清楚。我不是想添加属性,我只是想通过反射来阅读它们。编辑澄清,我希望。
-
代理类应该继承自你的 POCO 类。我想你可以看看
proxyType.BaseType。 -
@cadrell0:我也没有代理类型 - 我如何要求这些?
标签: c# entity-framework ef-code-first