数据库中的实体框架更新模型不为tt类中新添加的表生成cs类

问题描述 投票:12回答:4

我在visual studio 2012中使用实体框架5。

我确实有一个现有的模型。现在我想为现有模型添加一个新表。为此,我打开了edxm文件并使用右键单击我成功更新了模型。

现在,在模型的“EntityTypes”下的“Model Browser”中,我可以看到表名存在。但是在解决方案资源管理器中,它没有显示我在.tt文件下新添加的表的自动生成的.cs文件。

我试过“运行自定义工具”,但它没有生成类。也重新启动了Visual Studio但结果是一样的。

谁能帮我?

谢谢

asp.net asp.net-mvc entity-framework asp.net-mvc-4 entity-framework-5
4个回答
32
投票

问题

  1. 如果您在数据库中有表名tblEmployee但是在添加“实体数据模型”之后,您已在EDMX文件中将实体tblEmployee更改为Employee,然后保存并生成。但是,在Model1.tt文件中不会自动生成更改名称的类。
  2. 当“从数据库更新模型”添加新表时出现相同的问题。
  3. 在MVC中也不可用使用EntityFramework使用模型类创建视图/使用操作创建控制器

这个问题适用于VS2012的早期版本。这个问题在VS2012的升级版本中得到了解决。

我们为VS2012和EF 5.0的早期版本提供了解决方案

按照步骤

  1. 右键单击On Model1.tt并选择“运行自定义工具”保存并立即生成,然后生成类。
  2. 右键单击On Model1.Context.tt并选择'Run Custom Tool'save and Build Now看看属性IN Context类就像生成一样 public DbSet<Employee> Employees { get; set; }

保存并构建解决方案

Model1Context context=new Model1Context();
List<Employee> empList= context.Employees.ToList();

这对我有用。但请记住,当使用VS2012的MVRC在MVC中“使用entityframework创建控制器和视图”时,EF 6.0仍然无法制作脚手架。您必须使用EF 5.0或使用新更新更新VS2012。


4
投票

在这种情况下,我所做的只是删除令人兴奋的模型,然后单击添加,只需添加新添加的表格!

如果这是edmx文件位于文件夹中的错误,现在已修复 - 下载并安装VS 2012 Update 1.您可以从以下位置获取:

http://www.microsoft.com/visualstudio/eng/downloads#d-visual-studio-2012-update


4
投票

我自己解决了。

问题出在文件filename.Context.tt和filename.tt中。

两个文件中指定的变量const string inputFile的图文件名与现有图文件(.edmx文件)不同。使用现有图表文件名更新它,然后从数据库更新模型。现在工作正常。


1
投票

我已将主键添加到新表中。这解决了问题。

© www.soinside.com 2019 - 2024. All rights reserved.