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

时间:2013-11-21 12:30:06

标签: asp.net asp.net-mvc entity-framework asp.net-mvc-4 entity-framework-5

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

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

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

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

任何人都可以帮助我吗?

由于

4 个答案:

答案 0 :(得分:29)

问题

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

    <强>解决方案

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

    按照步骤

    1. 右键单击On Model1.tt并选择“运行自定义工具”保存并立即生成,然后生成类。
    2. 右键单击On Model1.Context.tt并选择'运行自定义工具'保存并立即构建查看属性IN上下文类生成如

      public DbSet<Employee> Employees { get; set; } 
      
    3. 保存并构建解决方案

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

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

答案 1 :(得分:4)

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

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

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

答案 2 :(得分:4)

我自己解决了。

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

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

答案 3 :(得分:1)

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