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

C# 将现有数据库映射到现有模型,c#,.net,entity-framework,C#,.net,Entity Framework,如果我有一个数据库(SQL Server 2008),其中包含大约100个表、50个存储过程e.t.c.——它的设计非常好,经过验证。假设我已经有了一个非常方便的模型,我们在几个应用程序中使用它——它是一组反映数据库结构的类。也就是说,我有数据库,不想创建模型,我有模型,不想创建数据库,但我仍然热衷于使用EF 5.0。这是我的问题。是否有任何方法可以将现有数据库映射到现有模型,而无需重新创建其中一个。我能想到的唯一选择是使用CodeFirst方法,通过FluentApi创建所有数据库集,同时将数

如果我有一个数据库(SQL Server 2008),其中包含大约100个表、50个存储过程e.t.c.——它的设计非常好,经过验证。假设我已经有了一个非常方便的模型,我们在几个应用程序中使用它——它是一组反映数据库结构的类。也就是说,我有数据库,不想创建模型,我有模型,不想创建数据库,但我仍然热衷于使用EF 5.0。这是我的问题。是否有任何方法可以将现有数据库映射到现有模型,而无需重新创建其中一个。我能想到的唯一选择是使用CodeFirst方法,通过FluentApi创建所有数据库集,同时将数据库初始值设置为null。这是正确的吗?

是的,你的方法是正确的。但是,您应该确保您的数据库模型是根据EF默认值(例如列名、关系)构建的
若不是,则应使用FluentAPI或模型中的属性覆盖DbContext类中每个“未约定”模型实体的映射
我还没有尝试EF 5,但它应该有的支持。所以你可以试试 如果默认情况下EF无法识别您的约定,请使用它们

此外,您可能需要检查您的关联属性在模型中是否是虚拟的,以启用延迟加载。

我可以想出两种策略:

  • 从数据库生成实体,并使用组合类或中间类使模型与实体通信
  • 。您必须调整您的模型,然后使其符合这方面的先决条件
  • 由于您正在使用大量存储过程,所以数据库优先的方法是最好的IMHO。看看如何绘制这些地图