给定一个“代码生成策略”设置为“无”的实体数据模型 (EDMX),EF 如何确定将概念模型映射到哪些 CLR 类型?
我想我在某处读到它只是探测与概念模型匹配的类型的程序集,但这是参考 EF 的 CTP 版本。现在还是这样吗?
我可以以某种方式控制这个过程吗?
特别是,我正在将大量代码库从使用 Linq2SQL 迁移到使用 POCO 和 EF 4.0。因此,我拥有 Linq2SQL 类以及 POCO 类,它们现在驻留在同一程序集中,但位于不同的命名空间中。我正在尝试从 L2S 平滑迁移到 EF,因此我想让这两个框架并行运行一段时间。但是,我收到运行时错误说
CLR类型到EDM类型的映射是
由于多种 CLR 类型而不明确
匹配 EDM 类型“SomeType”。
先前发现的 CLR 类型
'SomeNamespace.SomeType',新发现的
CLR 类型 'SomeNamespace.POCO.SomeType'
其中 SomeNamespace 是 L2S 实体的命名空间。如果 EF 只是探测与概念模型匹配的所有类型,则此错误是有意义的。我可以限制 EF 仅探测 SomeNamespace.POCO 命名空间吗?或者我应该将 POCO 对象放在另一个程序集中?或者我应该采取第三种方法?
谢谢。
请注意 ADO.NET 团队博客中的以下评论:
杰夫 2010 年 2 月 25 日上午 9:10 @Derek
这是故意的。你可以把你的
任何命名空间中的 POCO 类
你想。实体框架的由
检测公约机制
实体上的哪些属性匹配
您的实体的属性
模型不使用命名空间。什么
重要的是类型名称(不带
命名空间)与 EntityType 名称匹配
在您的模型中(edmx/csdl 文件)。
需要注意的一个方面是,如果您
有多个同名类型
但在不同的命名空间中。因为
我们不考虑命名空间,我们
检测到我们发现了多种类型
我们抛出一个异常。
Jeff
参见这篇文章:链接文本
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)