【问题标题】:What is the difference between 'Database First' and 'Code First to Existing Database' in Entity Framework实体框架中的“数据库优先”和“代码优先到现有数据库”有什么区别
【发布时间】:2014-03-27 17:39:56
【问题描述】:

我刚刚观看了有关 EF6.1 中新的“代码优先到现有数据库”功能的 MSDN 视频

http://channel9.msdn.com/Blogs/EF/Code-First-to-Existing-Database-EF6-1-Onwards-

但是,作为 EF 的新手,这似乎是从数据库生成 POCO 模型类,这正是我认为“数据库优先”所做的(而且我理解“数据库优先”与“代码优先”相反)

有什么区别?它们都是“数据库优先”!

【问题讨论】:

  • 已经有了很好的解释,这里不需要重复答案。 Code-first vs Model/Database-first
  • 否 - 这是一个不同的问题。 “现有数据库的代码优先”是 EF 6.1 中的新功能
  • 现有数据库的代码优先并不是新事物。请参阅 Scott Guthrie 的this blog
  • EF 6.1 中的所有新功能是用于从数据库逆向工程实体类的新工具。这种能力以前就有。现在只需点击一下即可。
  • @Anthony - 该功能在 Entity Framework Power Tools 中已存在很长时间,但在 6.1 中已集成到 EF 工具本身中。

标签: c# entity-framework


【解决方案1】:

Code First 有点用词不当......它真正应该被称为“基于代码的模型”与“基于 XML 的模型”。

代码首先根据类的属性和/或代码中的流畅映射创建内存模型。

Database 和 Model 首先基于 .EDMX 文件创建内存模型,然后使用该文件生成类。

即。代码首先使用代码作为其模型。数据库和模型首先使用 EDMX 文件作为模型。 Code First 对现有数据库只生成代码优先类(属性和/或流畅映射),而数据库首先生成一个 EDMX 文件,然后通过 T4 模板生成类。

【讨论】:

  • Code First 仅在您从现有数据库开始时用词不当。启动一个新项目,创建实体类并让 EF 为您生成数据库是“代码优先”的意思,这不是用词不当。
  • @JC。 - 你总是能够从数据库开始。事实上,我从未使用过代码优先的数据库生成部分,但我只使用代码优先。仅仅因为您可以首先从代码开始并不意味着它准确地描述了它是什么。
  • 到目前为止,Visual Studio 缺乏从数据库创建“代码优先”类的内置工具,但这既不存在也不存在。 Code-First 因编写普通类并从中生成数据库的过程而得名。
  • @JC - 它被命名为代码优先,因为已经存在“数据库优先”和“模型优先”的名称,并且选择它以适应这种方法。 EF 电动工具已存在多年,由执行此操作的 EF 团队维护。所以说这些工具不存在是不正确的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多