0

我必须创建一个新项目,并且(像往常一样)使用现有的 SQL Server 数据库。

我曾经使用 EF Code First 连接我的数据库,打开我的 EDMX 模型设计器,然后右键单击 --> 添加代码生成项。(http://weblogs.asp.net/jgalloway/archive/2011/02/24/generating-ef-code-first-model-classes-from-an-existing-database.aspx)很容易。

但现在我发现有一种叫做 EF Power Tools 的东西可以让我先做逆向工程师代码(很酷的名字!)并得到同样的结果(http://msdn.microsoft.com/en-us/data/jj200620

你知道这两种选择的区别吗?哪一个更好?

提前致谢。

(抱歉,如果之前有人问过这个问题,但我没有找到。)

4

2 回答 2

2

不同之处在于 edmx 方法不是代码优先,而是使用DbContextAPI 的数据库优先。您将始终使用数据库作为模型更改的来源。

EF Power Tools 产生一个真正的代码优先模型DbContext:从那时起,您将首先更改类模型并相应地修改数据库(例如通过 EF 迁移)。

两者都不是“更好”。DbContextAPI 比 更容易使用ObjectContext,但两种方法都使用前者。您可以选择是先使用数据库还是先使用代码。这是个人喜好问题,可能取决于谁维护数据库结构。使用数据库优先,可以更轻松地响应其他人对数据库结构施加的更改。

于 2013-02-06T10:49:58.920 回答
1

就数据库的工作流程而言,添加到@Gert-Arnold 所说的内容:

使用数据库优先,可以更轻松地响应其他人对数据库结构施加的更改。

如果其他人正在管理数据库更改,我发现使用 EF 设计器要容易得多。您将获得一个更新的数据库,然后只需在 EF 设计器中单击鼠标右键并从数据库中更新模型。您可以使用源代码管理轻松查看已更改的内容。

此外,如果您只需要数据库中的表子集,反向工程会导致大量工作必须返回并从上下文中删除类和属性。

我发现通过代码优先对现有数据库进行重新逆向工程,试图弄清楚发生了什么变化以及我需要如何更新使用上下文的代码实在是太痛苦了。

于 2013-10-23T17:23:01.443 回答