2016-05-30 76 views
5

我正在開發一個WPF應用程序與EF 6數據庫的第一種方法,我有我的解決方案中的1個項目,如果我運行我的項目總是出現這個錯誤。實體框架:上下文正在代碼第一模式下使用從EDMX文件生成的代碼

上下文在代碼優先模式下使用,代碼是從數據庫優先或模型優先開發的EDMX文件生成的。這將無法正常工作。要解決此問題,請不要刪除引發此異常的代碼行。如果您希望使用Database First或Model First,請確保實體框架連接字符串包含在啓動項目的app.config或web.config中。如果您正在創建自己的DbConnection,那麼請確保它是一個EntityConnection而不是其他類型的DbConnection,並且將其傳遞給採用DbConnection的基本DbContext構造函數之一。要了解更多有關代碼首先,數據庫優先和模型優先看到這裏的實體框架文檔:http://go.microsoft.com/fwlink/?LinkId=394715

+0

您是否設置了連接字符串?如果沒有看看這裏:http://www.asp.net/mvc/overview/getting-started/introduction/creating-a-connection-string –

+0

不適合我。 – Munjani375

+0

多個上下文每個連接字符串或連接字符串的格式不正確 –

回答

1

你不應該使用生成的連接字符串,現在已包含在解決方案中的所有元數據文件。相反,嘗試使用的app.configconnection string部分:

你可以做
"data source=localhost\sqlexpress; initial catalog=sample; integrated security=True;MultipleActiveResultSets=True;" 
3

一件事是...(如果是數據庫第一)

打開的.edmx [圖] - >右鍵 - >「更新從數據庫模型「

然後看看會不會出現」添加「,」刷新「和」刪除「選項卡。

如果不......可能你的連接被中斷,VS的對話框會創建一個新的連接字符串,而不會出現。 =)

+0

如果這是第一次設計呢? –

+0

您在項目中使用.Edmx嗎? –

0

我也遇到了這個完全相同的消息,但工作與一個web MVC項目。當我嘗試從導入的模型中自動生成控制器時,會觸發此消息。它似乎不工作,因爲「這是從一個EDMX文件生成的」。

好消息是,如果我在「代碼優先」而不是「EF Designer」的基礎上生成模型,它將起作用。壞消息是,如果我想要自動生成控制器,我不能使用EF Designer。用這兩種方法生成模型無關緊要。一旦模型生成,就可以以相同的方式使用它。

試圖從您的項目中刪除所有emdx對象,然後重新創建基於代碼優先而不是EF Designer的模型。爲我工作!

5

EF根據連接字符串中是否存在元數據部分進行假設。如果您收到此錯誤,您可以將元數據部分添加到配置文件中的連接字符串中。

E.g.如果你的連接字符串看起來是這樣的:

<add name="MyModel" connectionString="data source=SERVER\INSTANCE;initial catalog=MyModel;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" /> 

前置metadata=res://*/MyModel.csdl|res://*/MyModel.ssdl|res://*/MyModel.msl;,使它看起來像這樣:

<add name="MyModel" connectionString="metadata=res://*/MyModel.csdl|res://*/MyModel.ssdl|res://*/MyModel.msl;data source=SERVER\INSTANCE;initial catalog=MyModel;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" /> 
4

我的錯誤是使用標準的連接字符串中構造

(服務器=測試\測試; Database = DB; User Id = test_user; Password = test),

但實體框架需要不同的格式

(元數據= RES:// /DBModel.csdl|res:// /DBModel.ssdl|res://*/DBModel.msl;provider=System.Data.SqlClient;provider連接字符串= "數據source = test \ test; initial catalog = DB; integrated security = True; MultipleActiveResultSets = True; App = EntityFramework "「」providerName =「」System.Data.EntityClient)

0

很晚但仍然有幫助。我陷入了類似的問題。發表了關於SO的問題,並找到了解決方案。你可以參考Connection String errors in C# Web Api。 我的情況是我在web.config中有兩個連接字符串(你會知道爲什麼時去鏈接)。評論一個字符串會引發錯誤,同時評論另一個錯誤如下:

嘗試創建類型爲'AccountController'的控制器時發生錯誤。確保控制器有一個無參數的公共構造函數。

我所做的是:我將我的第一個連接字符串命名爲DefaultConnection,並在ApplicationDbContext類構造函數中給了這個DefaultConnection。現在我的AccountController使用這個連接字符串,所有其他控制器使用第二個連接字符串。 這解決了我的問題。

+0

你能發表一個這樣的代碼示例,我不確定你的意思。 –

+0

@HunterNelson我已經在我的回答中發佈了我已經給出的參考。 –

相關問題