【问题标题】:Entity framework - code first, or maybe model? [duplicate]实体框架 - 代码优先,或者模型? [复制]
【发布时间】:2012-02-09 00:09:29
【问题描述】:

可能重复:
EF 4.1 Code-first vs Model/Database-first

我做了一些研究,但答案并不让我满意。 我使用实体框架启动了自己的 asp.net mvc 应用程序,以使用数据库。我首先创建一个数据库,然后从该数据库创建模型。好吧,我知道这就是所谓的“模型优先”。我知道第二种方法,从学校开始(代码优先)。我的讲师今天告诉我,模型优先的方法已经过时了。那是真的吗?或者也许:代码优先有什么优势吗?您认为真正的区别是什么,哪个更好?

【问题讨论】:

  • 恕我直言,先编码或稍后再哭。
  • 如果您从数据库创建模型,则首先是数据库而不是模型。

标签: c# entity-framework


【解决方案1】:

具体EF代码先指代码,模型先指数据库。

哪个更好取决于项目。如果 db 被视为应用程序的核心,或者您正在使用 db 特定的功能,那么模型优先的方法是有意义的。

如果将域模型视为应用程序的核心,而将数据库作为一种持久存储形式,那么代码优先的方法是可行的。

附带说明:这个概念通常被称为模型优先(域/代码)和数据库优先(数据库模式)。对于 EF,这有点令人困惑,因为模型指的是 db 架构,而不是域模型,代码指的是代码。

【讨论】:

  • 不,模型优先和代码优先不是一回事。模型优先和数据库都首先使用 .edmx 文件,而代码优先则没有。
  • 看起来区别在于概念与实现。对于 EF,他们将域称为代码,将模型称为 db。从概念上讲,模型是代码,数据库是数据库。我将根据 EF 定义更新我的答案。
  • 不,这是不正确的。在代码优先中,模型是通过流畅的代码映射定义的。在模型优先中,模型是通过 XML 映射定义的(因为它首先在数据库中)。数据库优先和模型优先之间的唯一区别是您从哪里开始。首先在数据库中,您在数据库中定义数据模型,然后将其反向工程为 xml(.edmx 文件)。首先在模型中,您在设计器中定义数据模型(或者如果您是硬核,则手动编码 xml),然后从 xml 生成数据库。在这两种情况下,实体类都是从 XML 生成的。 Code First 首先创建了实体类。
  • @MystereMan 我认为您是指 EF,我在概念上谈论 ORM,而不是具体的实现或框架。
  • 代码优先是在实体框架中开发数据库模型的一种特定方式,所以是的。这就是我和提问者所说的。一般概念的答案并不能回答这里的问题。
【解决方案2】:

DB first 一点也不过时。事实上,对于许多企业项目来说,这是要走的路。

如果您是从头开始为自己构建一些东西,那么代码优先可能是一种更好的方法。

【讨论】:

    【解决方案3】:

    实体框架提供:1)数据库优先,2)模型优先和3)代码优先。 1 & 2 创建 edmx 文件 数据库优先:实体数据模型(edmx:StorageModels)是从现有数据库创建的。 模型优先:概念数据模型(edmx:ConceptualModels)是使用指定的设计器和映射创建的。数据库将由此生成。 代码优先:创建您的 .NET 类(无 .edmx 文件)。数据库将从这里生成。

    “老派”将使用 ADO.NET DataSet/DataTable。

    最快的数据访问是使用 DataReader 并编写您自己的数据访问。 没有任何框架比使用 DataReader 填充您自己的 POCO 更快。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-01
      • 2020-04-10
      • 2016-06-03
      • 1970-01-01
      相关资源
      最近更新 更多