7

我使用实体框架5与Visual Studio 2012实体框架更新模型不

我有一个现有的模型TT类产生CS类新增加的表。现在我想向该现有模型添加一个新表格。为此我打开了edxm文件,并使用右键单击我成功更新了模型。

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

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

任何人都可以帮助我吗?

感谢

+0

任何专家可用..? – Dev

回答

14

问题

  1. 如果您在数据库中,但之后你在EDMX改变实体tblEmployeeEmployee文件,然后保存并生成添加“实体数据模型”有表名tblEmployee。但在Model1.tt文件中不会自动生成更改名称的类。
  2. 当“从数据库更新模型”添加新的表相同问题发生。
  3. 此外,在MVC不可用在创建视图与模型类/创建控制器随着使用的EntityFramework

这个问题的行动是为VS2012.This问题的早期版本是在VS2012的升级版本解决。

解决方案

我们与VS2012 & EF 5.0

关注的早期版本,该解决方案的步骤

  1. 右击型号1。tt并选择'运行自定义工具'保存并立即生成看到类生成。
  2. 右键单击Model1.Context.tt并选择“运行自定义工具”保存和现在构建看到的是像

    public DbSet<Employee> Employees { get; set; } 
    

保存生成的属性,在上下文中类和构建解决方案

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

这对我有效。 但请记住,在MVC中创建控制器和使用实体框架的视图时,EF 6.0仍然无法创建脚手架,并且这个VS2012的版本。 您必须使用EF 5.0或更新VS2012与新的更新。

+1

谢谢。在我接受这个答案之前,我已经解决了它,因为它可能对别人有帮助。 – Dev

+1

这很有帮助,谢谢。通常自动代码生成对我来说很好,但是这次我将实体edmx添加到App_Code文件夹下的ASP.NET网站项目中,这可能会导致模型中的问题不会从使用“从数据库更新模型”。 –

+1

这是超级有用。我一直在努力争取过去这个问题。它为我工作。谢谢!保持良好的工作。 –

4

解决它自己。

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

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

+0

你能解释一下吗? –

+0

这是一个很好的答案。完全删除模型并添加新的数据模型。因此这些文件将再次创建文件并进行修复。不只是删除模型图表中的表格。删除模型文件和任何嵌套文件。 –

+0

你救了我的一天! –