gka*_*aio 57 c# ef-code-first ef-database-first entity-framework-6 asp.net-mvc-5
使用EF 6.1,MVC 5,VS 2013,C#
我有一个在Toad DM for SQL Server中设计的现有数据库模型,并且保持它始终更新非常重要
使用ADO.NET实体数据模型我从数据库中选择Code First(EF 6.1中的新功能)来生成模型.注意:模型类和DbContext类成功生成但生成了NO .edmx或.tt文件.
接下来,我使用Entity Framework添加了一个新的脚手架项:带有视图的MVC 5控制器.注意:生成成功,控制器和视图
从现在开始,我不想使用Code First来更新我的数据库.相反,我希望根据数据库更改来更新模型.接下来做什么?如果我没有edmx文件,我将无法从数据库更新我的模型类?
Bri*_*ats 51
实体数据模型向导的数据库中的Code First在创建实体类方面表现非常出色,就像它们是以Code First风格创建的一样.您要问的是,如果您的数据库发生更改,是否有任何方法可以使这些类保持最新,类似于EDMX样式"从数据库更新模型".从我研究过,这是不使用内置的工具可能.但是,这是我发现有用的一种解决方法:
假设我有一个带有产品表和客户表的数据库.最初我创建了一个StoreDBContext类,并选择了产品作为我的对象之一.现在我想将customer表作为新实体添加到现有上下文中.以下是使用Code First向导执行此操作的方法:



StoreDBContextTemp.cs然后复制新添加的实体的虚拟属性:public virtual DbSet<Customer> Customers {get; set;}
StoreDBContext.csdbcontext类中.如果添加或删除表,则需要手动调整字段,但每次将新表添加到模型时,至少不需要手写几十个属性.
还有一个选项是从项目中删除自动生成的类,然后再次生成它们.虽然我们只需遵循这种方法,但我们需要确保我们应该为数据模型(继承自DbContext的类名)提供与前一个相同的名称.数据模型名称在下面突出显示
三件事。
当您使用 Code First 时,没有 .edmx。
如果您使用“代码优先迁移”,则必须先编写代码,然后将更改迁移到数据库。这可以帮助您使代码更有条理,而无需生成代码,这是一个优势。
Visual Studio 中有一个插件可以做相反的事情。Entity Framework PowerTools 允许您选择数据库并将其映射到对象。
https://visualstudiogallery.msdn.microsoft.com/72a60b14-1581-4b9b-89f2-846072eff19d
| 归档时间: |
|
| 查看次数: |
39127 次 |
| 最近记录: |