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

你救了我的一天! –