>
我有一个用Toad DM为SQL Server设计的现有数据库模型,保持它的更新非常重要 >
在使用ADO.NET实体数据模型时,我首先从数据库(EF 6.1中的新特性)中选择代码来生成模型。注意:已成功生成模型类和DbContext类,但未生成。edmx或。tt文件。
接下来我添加了一个新的脚手架项目:MVC5 Controllers with views,使用实体框架。注意:成功,控制器和视图生成 从现在开始,我不想首先使用代码来更新我的数据库。相反,我希望根据数据库更改更新模型。接下来怎么办?如果我没有edmx文件,我将不能更新我的模型类从数据库?
实体数据模型向导的Code First from Database非常出色地创建了实体类,就好像它们是以Code First风格创建的一样。您所问的是,是否有任何方法可以使这些类在您的数据库更改时保持最新,类似于EDMX样式的“从数据库更新模型”(Update Model From database)。根据我的研究,使用内置工具是不可能做到这一点的。不过,这里有一个我发现很有用的变通方法:
假设我有一个带有产品表和客户表的数据库。最初,我创建了一个StoreDBContext类,并选择product作为对象之一。现在我想将customer表作为一个新实体添加到现有上下文中。下面是如何使用代码优先向导完成此操作的方法:
如果您添加或删除表,您将需要手动调整字段,但至少在每次向模型添加新表时,您不需要手写数十个属性。
还有一个选项是从项目中删除自动生成的类,然后再一次生成它们。在遵循这种方法时,我们只需要确保为数据模型(从DbContext继承的类名)提供与前一个相同的名称。数据模型名称在下面的snap中突出显示
三件事。
>
如果使用代码优先迁移,则必须先编写代码,然后将更改迁移到数据库。这有助于您在没有生成代码的情况下拥有更有条理的代码,这是一个优势。 Visual Studio中有一个插件可以做相反的事情。EntityFrameworkPowerTools允许您选择数据库并将其映射到对象。 https://visualstudiogallery.msdn.microsoft.com/72a60b14-1581-4b9b-89f2-846072eff19d