CodeFirst优于Database First有什么优势?

Aka*_*ava 8 ef-code-first entity-framework-4.1 ef-database-first

我正在观看EF 4.1的一些视频和教程,我不明白CodeFirst的任何好处(除了一些如果DB是非常小的3-4个表,我很懒于创建数据库).

到目前为止,最好的方法是在某种数据库编辑器中创建数据库,这肯定比在实体模型中编辑更快,EF可以获取每个关系并正确地创建关联.我知道命名约定等方面存在挑战,但我觉得管理Code First非常困惑,因为所有内容看起来都像代码,而且代码也太多了.

CodeFirst可以做什么,Db首先不能做什么?

Dav*_*veo 19

CodeFirst不能做任何DB首先不能做的事情.在一天结束时,他们都使用实体框架.

使用codefirst的主要优点是:

  • 开发速度 - 您不必担心创建只需开始编码的数据库.适合没有太多DBA经验的编程背景的开发人员.它还具有自动数据库更新功能,因此每当您对更改进行建模时,DB也会自动更新.
  • POCO - 代码更清晰,你不会得到大量自动生成的代码.您可以完全控制每个班级.
  • 简单 - 您没有要更新或维护的edmx模型

有关详细信息,请参阅代码优先与模型/数据库优先 ,此处代码优先或数据库优先,如何选择?

  • `CodeFirst的+1不能做任何DB首先不能做的事情 (5认同)
  • 老实说,为属性和元数据编写c#代码时引用速度较慢且难以管理,当没有属性超过10时很可能发生.到目前为止代码生成我不在乎它看起来多脏.自动更新数据库,这听起来很有趣,我会检查它. (2认同)

小智 8

来自DataCentric方法,我总是觉得人们喜欢用Code First方法创建它很奇怪.当我设计我的数据库时,我已经在考虑每个表是什么,就好像它们是类.它们如何链接在一起以及数据如何流动.我可以通过数据库对整个系统进行成像.

我一直被告知你从头开始工作,让你的基础正确,其他一切都将随之而来.我为许多不同的公司创建了许多不同的系统,我所做的速度基于这样一个事实:一旦我拥有一个强大的数据库模型,我就会运行我的自定义代码生成器,创建视图/存储过程为以及我的Controller/BusinessLayer/DataLayer,把所有这些放在一起,我所要做的就是创建前端.

如果我必须首先在代码中创建整个系统来生成数据库,以及所有其他项目,那么我会想象它需要更长的时间.我并不是说我在任何方面都是正确的,而且我确信可能有更快,更有经验的方法来开发系统,但到目前为止,我还没有找到一个.

谢谢你让我发言,我希望我的观点有所帮助.

  • 我发现代码优先绝对没用,我们要么准备好数据库,要么使用数据库工具轻松创建数据库,并且我们有读取数据库并生成代码优先模型的文本模板。数据库设计者更容易可视化和更改。最重要的是,您拥有完全的控制权。 (2认同)