2013-10-26 128 views
6

我正在使用VS 2013和SQL Svr 2012並嘗試使用EF填充GridView。由於這是一個非常簡單的測試,因此我只有一個表格,其中包含一個鍵和一些數據字段。創建模型的過程似乎工作正常 - 它在設計器視圖中按預期顯示,文件在app_code中創建,bin文件夾使用2個dll創建,配置文件使用連接字符串和其他條目更新。Visual Studio 2013和實體框架

當我嘗試選擇「命名連接」時,出現「無法加載指定的元數據資源」的錯誤,並討論重建項目以獲取程序集。

我花了閱讀其他情況下,像這樣小時,我無法理解:

  1. 爲什麼當它是從來沒有VS問題2010

  2. 如何解決這種情況的發生連接字符串指向它想要的資源。我完全喪失了關於完全合格的組裝名稱的所有技術建議 - 我沒有嘗試過。

  3. 如何設置一些參數來強制資源在適當的位置?我所讀過的建議似乎並不與VS涉及非常好2013

我需要決定是否我應該卸載VS 2013和使用VS 2012目前,我正在使用VS 2010 ASP 4.0和我想轉移到ASP 4.5並且通常跟上微軟技術。但是,我沒有技能水平來處理VS版本的問題。在我看來,這個EF執行可能是由於我的電腦上有一個錯誤或者一些奇怪的錯誤 - 我試圖弄清楚是哪種情況。我在過去沒有這些工具的乾淨機器上安裝了VS 2013 Express和SQL Svr 2012。

我真的很想看到有人誰是非常熟悉的Visual Studio試圖複製我的問題,因爲它僅需要幾分鐘的時間這樣做:

  1. 在MS SQL Server上,創建一個微小DB帶有一個包含主鍵和幾個數據字段幷包含一些測試數據的表 - 使用TestTable1將其稱爲TinyDB。

  2. 使用VS 2013 Express for Web,使用VB創建「ASP空網站」選項的「新網站」。

  3. 添加一個包含「ADO.Net實體數據模型」的ASP App_Code文件夾,並將其名稱保留爲「模型」。

  4. 從數據庫生成模型,爲「TinyDB」創建一個「新連接」並使用Entity Framework 6.0,然後選擇「TestTable1」。請注意,命名空間是「TinyDBModel」。點擊「完成」將在App_Code,其他文件夾中生成多個項目並更新web.config。

  5. 添加一個名爲default.aspx的Web窗體並將GridView拖到它上面。在gridview的設計模式中,選擇「新數據源」,然後選擇「實體」選項(注意出現在default.aspx中的EntityDataSource1的名稱)。點擊下一步,在「命名連接」下選擇「TinyDBEntities」 - 這是我的地方得到錯誤「無法加載指定的元數據資源」。

請注意,VS 2010中的這個確切練習完美地工作,併產生一個顯示正確數據的網格。

回答

8

不幸的是,EntityDataSource控件不適用於最新版本的實體框架EF6。希望控制器在VS或EF的未來更新版本中獲得更新,但現在你不能一起使用這兩者。

有幾個解決方案/備選方案:

  1. 回落到EF 5.爲了做到這一點,刪除App_Code文件夾中的.edmx和.TT文件,刪除從該EF組件Bin文件夾,並從web.config中刪除對EF的引用。然後重新構建網站,添加一個新的ADO.NET實體模型並在Choose Your Version對話框中選擇版本5。然後從App_Code文件夾中刪除.tt文件,打開EDMX對話框,右鍵單擊一個空白區域,並在Properties Grid上將Code Generation Strategy設置爲Legacy ObjectContext。然後再次重建,它應該工作。

  2. 使用模型綁定。這確實是推薦的解決方案。 Microsoft/EF團隊建議人們遠離EntityDataSource控件並僅將其用於動態數據網站,模型綁定是首選解決方案。它非常乾淨且簡單易用,並且可以讓您對查詢和對象更新進行很多控制。有關模型綁定的詳細信息,請訪問:http://www.asp.net/web-forms/tutorials/data-access/model-binding/retrieving-data

+1

嗨內蒙古自治區 你的第一個建議完美的作品,我會在第二個建議追求的模型綁定教程 - 非常感謝你!我應該注意,你的步驟需要遵循給定的順序(在更改EDMX屬性之前刪除.tt)。此外,配置文件的自動EF更新需要剪貼 - 將ConfigSections移回到文件的開頭 - 至少在我的小測試中。 您的詳細解決方案以及您對更廣泛問題的洞察力是最受讚賞的! –

相關問題