我看了一些EF 4.1的视频和教程,我不明白CodeFirst的任何好处(除了一些DB是非常小的3-4个表,并且我不愿意先创建DB的情况(。
大多数情况下,到目前为止最好的方法是在某种数据库编辑器中创建数据库,这肯定比在实体模型和EF中编辑更快,可以正确地拾取每个关系并创建关联。我知道命名约定等方面存在挑战,但我觉得管理"代码优先"非常令人困惑,因为所有东西看起来都像代码,而且代码太多了。
CodeFirst可以做什么,Db first不能做什么?
CodeFirst不能做DB first不能做的任何事情。归根结底,他们都在使用实体框架。
使用codefirst的主要优点是:
- 开发速度-您不必担心创建数据库,只需开始编码即可。这对于没有太多DBA经验的编程背景的开发人员来说是很好的。它还具有自动数据库更新功能,因此无论何时建模更改,数据库都会自动更新
- POCO-代码要干净得多,不会导致大量自动生成的代码。你可以完全控制你的每一个班级
- 简单-您没有需要更新或维护的edmx模型
有关更多信息,请参阅代码优先与模型/数据库优先这里是代码优先还是数据库优先,如何选择?
来自以数据为中心的方法,我总是觉得人们喜欢用代码优先的方法创建它很奇怪。当我设计数据库时,我已经在考虑每个表是什么,就好像它们是类一样。它们如何连接在一起以及数据将如何流动。我可以通过数据库对整个系统进行成像。
我一直被教导,你要从头开始,打好基础,其他一切都会随之而来。我为很多不同的公司创建了很多不同的系统,我这样做的速度是基于这样一个事实,即一旦我有了一个强大的数据库模型,我就会运行我的自定义代码生成器,为我创建视图/存储过程以及控制器/业务层/数据层。把所有这些放在一起,我所要做的就是创建前端。
如果我必须先用代码创建整个系统来生成数据库,以及所有其他项目,那么我会认为它需要更长的时间。我并不是说我在任何方面都是对的,我相信可能有更快、更有经验的方法来开发系统,但到目前为止,我还没有找到。
谢谢你让我发言,我希望我的观点对我有所帮助。
在EntityFramework 4.3中为CodeFirst启用了迁移,因此你可以很容易地将从模型到数据库的更改无缝更新参考1
详细视频:完整参考视频
这取决于您的项目。我会尝试制作一个合成酶一些想法:
- 您可以完全控制实体类。它们不再生成,您不必更新T4模板或使用分部类
- EDMX模型将在EF7中消失,取而代之的是CodeFirst模型。因此,如果您计划迁移到EF,或者您在不久的将来启动了可以使用EF7的项目,请记住
- 在多个开发人员正在处理该模型的情况下更容易进行合并+/-注释和映射应手动完成。我想说,代码优先的方法看起来更轻松(不那么膨胀(,我们可以保持简单(视觉模型可以隐藏不需要的复杂性(。向Fluent API开放
- 您仍然可以通过Power Tools可视化模型,但该模型是只读的。对模型的任何更改都应该手动完成(即使是初始实体也可以从头开始生成(。您没有部分模型(图表(,但我们的模型应该足够小
- 数据库优先似乎与SP和功能结果更好地集成在一起(EF6中进行了一些改进(