我知道这个问题已经被问过很多次了,因为我已经阅读了很多关于利弊等主题的帖子,但我仍然无法决定哪种方法适合我。我对网络编程非常陌生,并且来自 SQL DB 管理员/报告写作背景。我决定尝试建立自己的网站,将来可能会有 30 -40 张桌子。
我已经研究过这两种方法,并且我确实喜欢实体模型方法,只是因为我喜欢设计器的简单性,而且我喜欢在我面前看到整个模型,它在一张快照中显示了整体画面。此外,我不是一个强大的程序员,我对它使用 DbContext 生成器模板生成 POCO 并在类之间进行所有链接的方式印象深刻。
然而,虽然我喜欢模型优先方法,但我觉得有一些缺点,我不确定它们是否是实际的缺点,或者我只是对模型优先方法和代码优先方法不够了解,因为我仍然非常对此很陌生。
我对使用 Model First 方法犹豫不决的原因是:
- 主要是因为我很难找到关于使用 MVC 3 的模型优先方法的教程。我发现使用 DbContext 的最佳教程是 Julie Lerman 的,但她没有涵盖对于使用数据注释和制作其他重要的伙伴类重新生成 POCO 时不会丢失的更改。大多数与 MVC 3 相关的教程似乎都使用代码优先方法。大多数人说这是因为导师不想专注于EF,而是在tuts中展示更多的MVC。我个人认为这是因为微软支持 Code First 方法而不是其他方法 :)
- 如果创建伙伴类是一种很好的做法,为什么我找不到很多针对 MVC 3 的教程?Buddy Classes 是视图模型的另一个名称吗?为什么我找不到 Microsoft 提供的任何教程来展示这些与 MVC 3 一起使用的伙伴/视图模型?
- 我试图在 2 个表之间建立基本的 1 对 1 关系。在模型中,您必须将每个表的标识键设置为相同的字段,而不是在其中一个表中使用 FK,当您有 3 个或更多表通过 1 对 1 关系相互链接时,这可能会有点混乱. 在代码中,解决此问题的一种方法是使用模型构建器并手动设置它。我认为在 MF 中,您可以通过进入我根本不喜欢做的 XML 来改变关系。
- 更多关于代码优先问题的支持/帮助
我对使用 Code First 方法犹豫不决的原因是:
-我是新手编码员。
-我发现随着项目的扩展,跟踪表格和关系变得非常困难。
- 没有模型图,我不得不说我真的很喜欢这个想法。
-通过配置类将实体映射到数据库我觉得不可能:)。
-更新表将需要更改代码和数据库。在模型中,只有一个模型更改会自动更新数据库和代码,如果你使用伙伴类,你可能也必须更新这些。
此外,现在我看到人们在某种程度上结合了 Code First 和 Database first 方法,因为您不让 Code First 生成数据库,而是手动创建数据库并使用 Code First API 到 EF 来获取它。
我的头脑在思考所有的选择、缺点和利弊。我只想继续创建我的网站,而不是考虑采用哪种方法。任何人都可以根据我所说的和/或他们认为将来会成为主流的方法,给我一些关于他们认为最好的方法的见解吗?
非常感谢戴夫