1

如果我有一个包含大约 100 个表、50 个存储过程等的数据库(SQL Server 2008),那么它的设计确实很好。假设我已经有一个非常方便的模型,我们在几个应用程序中使用它——它是一组反映数据库结构的类。即我有数据库但不想创建模型,我有模型但不想创建数据库,但我仍然热衷于使用 EF 5.0。这是我的问题。有没有办法将现有数据库映射到现有模型而不重新创建其中一个。我能想到的唯一选择是使用 CodeFirst 方法并通过 FluentApi 创建所有 DbSet 并将数据库初始化程序同时设置为 null。这个对吗?

4

2 回答 2

2

是的,您的方法是正确的。但是,您应该确保您的数据库模型是根据 EF 默认命名约定(例如列名、关系)构建的。
如果不是,您应该使用 FluentAPI 或模型中的属性覆盖 DbContext 类中每个“未约定”模型实体的映射。
我没有尝试过 EF 5,但它应该支持可插入约定。因此,如果默认情况下 EF 无法识别您的约定,您可以尝试使用它们。
此外,您可能需要检查您的关联属性在模型中是否为虚拟以启用延迟加载。

于 2012-09-14T07:51:47.073 回答
1

我可以想到两种策略:

  1. 从数据库生成实体并使用组合或中间类让您的模型与实体通信。
  2. 将您的模型用作 POCO 类。您必须调整您的模型,然后使其符合前提条件。

当您使用大量存储过程时,数据库优先方法是最好的恕我直言。看看这里关于如何映射这些。

于 2012-09-14T08:00:56.857 回答