实体框架和代码优先发展

时间:2011-11-29 11:20:51

标签: .net entity-framework code-first

Microsoft发布了Entity Framework 4.0,其中开发人员可以进行Code First Development。这很好,感谢微软。

我对代码优先开发有一点疑虑。我曾在ASP.NET 3.5 SP1和Visual Studio 2008 SP1中使用过Entity Framework。在那里我们创建一个数据库模式,然后我们创建实体数据模型。这意味着我们正在从数据库创建我们的类模型。我认为这称为数据优先开发。

但是当我们在Entity Framework 3.5 SP1中创建实体数据模型时,有两个选项。首先是从现有数据库生成,另一个是创建空白模型。假设我创建了一个空白模型,然后将其映射到数据库。因此,我们首先开发类模型,而不考虑数据库模式,然后将其映射到数据库。我的问题是,它首先被称为代码开发吗?那么为什么社区人员和书籍都说“在Entity Framework 3.5 SP1中不可能实现代码优先开发”?

要解决我的问题,我需要你的帮助。所以请回复这篇文章。

谢谢。

3 个答案:

答案 0 :(得分:5)

从实体框架4.x开始,

Code First可用。 因此,您无法从3.5 SP1中的代码模型生成数据库。

基本上有3种类型:

  1. 数据库优先(数据库已存在,您使用向导从中创建edmx)
  2. 模型优先(使用Designer创建数据库模型,实体框架从中创建数据库)
  3. 代码优先(您创建代码,实体框架从中创建数据库)
  4. 更多信息:Code-First Development with Entity Framework 4

答案 1 :(得分:3)

实际上这被称为“模型优先”开发。虽然Visual Studio中的默认设计器直接将您的模型转换为代码,但它实际上只是您在设计器中看到的“概念模型”。在定义属性和关系的地方,设计者使用“代码生成策略”为您创建.NET类。

“新代码优先”方法允许您直接创建.NET类,而不是确定“概念模型”的外观。

答案 2 :(得分:1)

创建空白模型然后尝试对域建模时称为Model First。你可以在设计师中直观地设计实体模型。然后它会为你创建关系。

首先在代码中没有可视化设计器。你必须自己编写关系代码。所以它被称为Code First.
有关详细信息,请查看此内容

Code-first vs Model/Database-first