【发布时间】:2011-10-10 13:42:37
【问题描述】:
我正在使用实体框架 4.1,一个 edmx 映射文件用于使用 T4 模板生成 poco 类。
如何从我的 poco 实体属性的对象上下文中获取数据库列的名称(如果可能的话)。
我认为属性和列之间的映射应该在其中一个容器中:
var container = objectContext.MetadataWorkspace
.GetEntityContainer(objectContext.DefaultContainerName, DataSpace.CSpace);
...
但我无法识别 CSpase 和 SSpace 之间的链接,看起来 CSSpase 可以完成这项工作,但这个容器是空的。
有什么想法吗?
【问题讨论】:
-
CSSpace 是完全内化的。您需要进行非公共成员反射或阅读原始 csspace xml 以获取您需要的信息。
-
我可以读取 edmx 文件,但这是我想避免的。您有如何入侵 CSSpace 的示例吗?
-
我曾经采取非公开反射路线,但由于数据模型的差异,事情开始出现问题。我最终放弃了它,转而使用 xml 路由,这稍微不像 hack(我猜)。您不需要阅读 edmx 本身。 edmx 作为三个清单资源(ssdl、csdl 和 msl)嵌入到您的输出程序集中......因此您可以直接从这些资源中加载 xml。
标签: .net entity-framework poco