【发布时间】:2011-08-13 10:18:19
【问题描述】:
我知道这个问题已经被问过很多次了,因为我已经阅读了很多关于这个主题的关于利弊等的帖子,但我仍然无法决定哪种方法适合我。我对 Web 编程非常陌生,并且具有 SQL DB 管理员/报告写作背景。我决定尝试建立自己的网站,最终可能会有 30 -40 个表格,未来可能会更多。
我已经研究过这两种方法,我更喜欢实体模型方法,只是因为我喜欢设计器的简单性,我喜欢在我面前看到整个模型,它在一张快照中显示了整体画面。另外,我不是一个强大的程序员,我对它使用 DbContext 生成器模板生成 POCO 并在类之间进行所有链接的方式印象深刻。
然而,虽然我喜欢模型优先方法,但我觉得有一些缺点,我不确定它们是否是实际的缺点,或者我只是对模型优先方法和代码优先方法不够了解,因为我'我对此还是很陌生。
我对使用模型优先方法犹豫不决的原因是:
-主要是因为我很难找到有关使用 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 方法犹豫不决的原因是:
-我是新手编码员。
-我发现随着项目的扩展,跟踪表格和关系变得相当困难。
-没有模型图,我不得不说我真的很喜欢这个想法。
-通过配置类将实体映射到数据库我觉得不可能:)。
-更新表将需要更改代码和数据库。在 Model first 中,只有一个模型更改会自动更新 DB 和 Code,如果你使用伙伴类,你可能也必须更新这些。
此外,现在我看到人们在某种程度上将 Code First 和 Database first 方法结合起来,因为您不会让 Code First 生成数据库,而是手动创建数据库并使用 Code First API 到 EF 来获取它。
所有的选择、缺点和利弊都让我头晕目眩。我只想继续创建我的网站,而不是考虑采用哪种方法。 谁能根据我所说的和/或他们认为将来会成为主流的方法,给我一些关于他们认为最好的方法的见解?
非常感谢戴夫
【问题讨论】:
标签: .net asp.net-mvc-3 entity-framework-4.1 ef-code-first ef-model-first