【发布时间】:2013-07-31 10:47:26
【问题描述】:
我正在关注MSDN article 将存储库模式和工作单元模式应用于实体框架,但我被困在定制域模型和尚不存在的数据库之间的映射。
这篇文章让我创建了两个简单的 POCO,Employee 和 TimeCard。它还介绍了在其中创建通用存储库和自定义实现。 (我正在使用自定义存储库,因此我可以尝试将 EF 依赖项保留在数据访问程序集中。)但是,它们在映射中的一个重要步骤上有点模糊。文章说:
有了 POCO,我们可以在 Visual Studio 中创建实体数据模型 (EDM)(参见图 1)。我们不会使用 EDM 为我们的实体生成代码。相反,我们想使用我们精心手工制作的实体。我们将仅使用 EDM 生成我们的数据库架构并提供 EF4 将对象映射到数据库所需的元数据。
它引用的“图 1”在这里:
但这就是它关于这个主题的全部内容。关于如何从 EDMX 生成 POCO,还有一个问题。 Google 提供了很多关于如何生成 POCO、从数据库生成 EDMX 等的信息。但在本演练中,我们已经有了 POCO,我需要在 EDMX 中使用它们,这反过来又会生成数据库(我假设,基于其他代码优先演练)。
我在项目中添加了一个“ADO.NET 实体数据模型”,它基本上是一个空白画布。但我没有看到如何将我现有的 POCO 添加到该画布上。我是否必须在设计表面上手动重新创建它们(在更大的域中这将是一个非常重要的重复问题)?如果是,它们如何映射到现有的?
【问题讨论】:
-
我不确定你是否可以直接做到这一点(至少在没有一些插件工具或其他东西的情况下不能)。用 POCO 生成数据库然后
Update Model From Database怎么样? -
@HighCore:这可能行得通。在即将到来的项目中,我想 DB 和模型之间会有一些分歧,在 Visual Studio 中拥有一个实际的 DB 项目来管理它可能是理想的。如果我要从 DB 生成 EDMX(在这个问题上,这与手工制作 EDMX 没有区别),那么它将如何映射到现有模型?
-
我猜不需要映射,因为代码中已经有了实体和上下文,而 EDMX 仅用作 Store-to-Entities 映射
-
@HighCore:我想这值得一试。我对代码中有一个“魔术层”感到不舒服。似乎 MSDN 演练中的一个很大的漏洞......
标签: entity-framework ef-code-first