实体框架和代码优先开发
Posted
技术标签:
【中文标题】实体框架和代码优先开发【英文标题】:Entity Framework and Code First Development 【发布时间】:2011-11-29 11:20:51 【问题描述】:Microsoft 发布 Entity Framework 4.0,开发人员可以在其中进行代码优先开发。这很好,感谢 Microsoft。
我对代码优先开发有一个困惑。我曾在 ASP.NET 3.5 SP1 和 Visual Studio 2008 SP1 中研究过实体框架。在那里我们创建了一个数据库模式,然后我们创建了实体数据模型。这意味着我们正在从数据库创建我们的类模型。我认为这就是所谓的数据优先开发。
但是当我们在 Entity Framework 3.5 SP1 中创建实体数据模型时,有两个选项。首先是从现有数据库生成,另一个是创建一个空白模型。假设我创建了一个空白模型,然后将其映射到数据库。所以我们首先开发类模型而不考虑数据库模式,然后将其映射到数据库。我的困惑是,它是否称为代码优先开发?那为什么社区的人和书都说“在 Entity Framework 3.5 SP1 中不可能实现代码优先开发”?
为了解决我的困惑,我需要你的帮助。所以请在这个帖子上回复。
谢谢。
【问题讨论】:
虽然不是完整的答案,但请看这里:***.com/questions/5446316/… 【参考方案1】:Code First 自 Entity Framework 4.x 起可用。 所以你不能在 3.5 SP1 中从你的代码模型生成数据库。
基本上有3种:
-
数据库优先(数据库已经存在,您可以使用向导从该数据库创建 edmx)
模型优先(您使用设计器创建数据库模型,实体框架从中生成数据库)
代码优先(您创建自己的代码,实体框架会从中创建一个数据库)
更多信息:Code-First Development with Entity Framework 4
【讨论】:
【参考方案2】:实际上这称为“模型优先”开发。尽管 Visual Studio 中的默认设计器直接将您的模型转换为代码,但实际上它只是您在设计器中看到的“概念模型”。在您定义属性和关系的地方,设计器使用“代码生成策略”为您创建 .NET 类。
“新的代码优先”方法让您可以直接创建 .NET 类,而不是弄清楚“概念模型”的样子。
【讨论】:
【参考方案3】:当您创建一个空白模型然后尝试对该域进行建模时,称为Model First
。您可以在设计器中直观地设计实体模型。然后它会为您生成关系。
在代码优先中,您没有视觉设计师。你必须自己编码这些关系。所以叫Code First.
看看这个了解更多详情
Code-first vs Model/Database-first
【讨论】:
以上是关于实体框架和代码优先开发的主要内容,如果未能解决你的问题,请参考以下文章