2013-12-20 23 views
3

我在我的asp.net MVC 4應用程序中使用實體框架工作。我有一個edmx文件。我試圖使用實體從這個EF模型來填充這樣的視圖模型:如果在代碼優先模式下使用T4模板for Database First和Model First開發生成的代碼可能無法正常工作

using (var context = new VehiclesContext()) 
      {    

       IEnumerable<SearchedVehicles> vehicles = context.Vehicles.Select(x => new SearchedVehicles 
       { 

         Year = x.Year, 
         Make = x.Make, 
         Model = x.Model, 
         Mileage = x.Mileage, 
         VIN = x.VIN 
       }); 

       return View(vehicles); 
      }  

車輛是在EDMX其中SearchedVehicles是視圖模型實體,但我得到這個異常:

Code generated using the T4 templates for Database First and Model First development may not work correctly if used in Code First mode. To continue using Database First or Model First ensure that the Entity Framework connection string is specified in the config file of executing application. To use these classes, that were generated from Database First or Model First, with Code First add any additional configuration using attributes or the DbModelBuilder API and then remove the code that throws this exception. 

在這條線:

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
     { 
      throw new UnintentionalCodeFirstException(); 
     } 

回答

8

這是每個設計。您已經從數據庫創建了一個模型,這表明您的代碼不應該創建數據庫。

您收到的錯誤消息是因爲它找不到數據庫並因此嘗試創建它而發生的。

要解決此問題,您需要檢查連接字符串以確保它能找到要連接的數據庫。如果你真的想創建數據庫,你應該先找代碼。這意味着要麼刪除「拋出新異常」行並繼續使用模型(這意味着您不能再從數據庫更新模型,因爲它會重新插入異常行),或者您可以反向設計數據庫以編碼 - 第一個模型。

請參閱http://msdn.microsoft.com/en-us/data/jj593170.aspx反向工程技巧。

+0

我沒有看到app.config文件中的任何連接字符串(edmx是在類庫項目中)我應該在app.config中添加連接字符串還是在使用此edmx的web.config中添加連接字符串?另外,當我創建edmx時,爲什麼沒有在app.config中創建連接字符串 – DotnetSparrow

+0

web.config是您的Web應用程序使用的。但奇怪的是它沒有爲你生成一個連接字符串...... – Zaphod

+0

如果你使用model-first(從數據庫生成模型)並且通過一個額外的構造函數指定一個顯式連接字符串,確保你使用正確的連接字符串樣式,即通過[這裏](http://stackoverflow.com/a/5942978/845584)。 – PeterX

0

我有同樣的錯誤'使用T4模板生成的代碼...'。我的問題與上面不同。我的數據庫表架構已更改。因此,在刷新之後,我通過將它打開爲xml來編輯edmx(rt單擊並說Open With ...並選擇xml)。在修復了xml中的所有錯誤之後,當我運行該應用程序時,出現上述錯誤。因此,下一次我撤消TFS中的所有內容,並繼續從Edmx圖表頁面中刪除和添加有問題的表格。這樣做有助於解決上述錯誤。還了解到,從不在xml模式下編輯edmx文件。

快樂編碼。

+0

這並沒有真正回答這個問題。如果您有不同的問題,可以通過單擊[提問](http://stackoverflow.com/questions/ask)來提問。您還可以[添加賞金](http://stackoverflow.com/help/privileges/set-bounties)在您擁有足夠的[聲譽](http://stackoverflow.com/help/)時吸引更多人關注此問題什麼聲譽)。 – ForceMagic

+0

@ForceMagic,99%的人來到這裏將只是谷歌搜索錯誤信息。他們甚至可能不讀這個問題。這些人中的很多人會遇到與user2308925相同的問題。 – user1172763

+0

@ user1172763 http://stackoverflow.com/help/how-to-answer – ForceMagic

相關問題