将现有数据库映射到现有模型

时间:2012-09-14 07:13:04

标签: c# .net entity-framework

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

我可以想到两个策略:

  1. 从数据库生成实体,并使用组合或中间类让模型与实体进行通信。
  2. Use your model as POCO classes。您必须调整您的模型,然后才能使其符合此前提条件。
  3. 当您使用大量存储过程时,数据库第一种方法是最好的恕我直言。看看here有关如何映射这些内容的信息。