我必须创建一个新项目,并且(像往常一样)使用现有的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)
你知道这两个选项之间的区别吗?哪一个更好?
提前致谢。
(对不起,如果之前曾问过这个问题,但我找不到。)
答案 0 :(得分:2)
区别在于edmx方法不是代码优先,而是数据库优先使用DbContext
API。您将始终使用数据库作为模型更改的来源。
EF Power Tools使用DbContext
生成真正的代码优先模型:从那时起,您将首先更改类模型并相应地修改数据库(例如,通过EF迁移)。
两者都不“更好”。 DbContext
API比ObjectContext
更易于使用,但两种方法都使用前者。您可以选择是先工作数据库还是先编码。这是个人偏好的问题,可能取决于谁维护数据库结构。首先使用数据库,可以更容易地响应其他人对数据库结构所施加的更改。
答案 1 :(得分:1)
就数据库的工作流程而言,首先添加@ Gert-Arnold所说的内容:
首先使用数据库,可以更容易地响应其他人对数据库结构所施加的更改。
如果其他人正在管理数据库更改,我发现使用EF Designer会容易得多。您将获得更新的数据库,然后右键单击EF Designer并从数据库更新模型。您可以使用源代码管理轻松查看已更改的内容。
此外,如果您只需要数据库中的一个表子集,则逆向工程会导致很多工作不得不返回并从上下文中删除类和属性。
我发现通过代码优先对现有数据库进行重新逆向工程,试图弄清楚改变了什么以及我需要更新使用上下文的代码,这太痛苦了。