我已經從我的web.config中刪除了連接字符串,實體框架仍然連接到數據庫!連接字符串在哪裏設置?這是一個問題,因爲我需要將我的網站的實時版本指向實時數據庫。EntityFramework - 連接字符串在哪裏?
回答
右鍵單擊您的Entity Framework模式(edmx文件)> goto Properties。你會在那裏看到連接字符串。
如果您的實體模型在一個單獨的項目中,那麼它必須在它自己的設置文件中。
我沒有得到一個edmx文件,因爲我使用Code First。我已經搜索了'connectionString',並且它不會出現在我的解決方案的其他地方! – 2011-04-26 12:47:38
約定>配置,對吧?
默認情況下,EF Code fist將在您本地的SQL Express實例中創建一個數據庫。
是的,我認爲這可能是這樣的。那麼如何讓它在web.config中使用連接字符串,因爲它似乎忽略了它? – 2011-04-26 13:54:24
web.config中的連接字符串名稱與DbContext類的名稱相同嗎?即如果你有 'public class MyContext:DbContext' 那麼你的連接字符串需要命名爲MyContext – 2011-04-30 15:22:21
如果您正在使用DbContext的codefirst aproach,您可以在web.config中放置一個名稱與您的上下文類名稱匹配的連接字符串,它將工作得很好。
似乎並不適合我。我添加了一個連接字符串,其中一些垃圾已添加到「數據源」值,並且它一直保持正常工作... – 2011-04-26 14:52:30
它應該只是一個sql連接字符串,名稱attribut應該與您的上下文名稱完全匹配 – 2011-04-26 15:06:46
查看App.Config。它也會存儲在那裏。
你需要這樣的事:
<configuration>
<connectionStrings>
<add name="MyContext"
connectionString="Data Source=.\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=YourDatabaseName"
providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
或者,如果你的數據庫所在的文件夾App_Data
:
<configuration>
<connectionStrings>
<add name="MyContext"
connectionString="Data Source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|YourDatabaseFilename.mdf;User Instance=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
替換MyContext
與你的類擴展DbContext
的名稱。
我想我已經完成了。我已將「服務器」值設置爲IP地址,並將連接字符串的名稱設置爲派生上下文類的名稱,但它應該只是忽略它! – 2011-04-26 15:42:08
這應該被標記爲答案 – reaz 2017-07-17 22:08:59
這裏有一個我發現的「常規優化配置」哲學,當涉及到試圖連接到現有數據庫(就像你在做什麼)。
如果您的DbContext類(例如Northwind)位於命名空間(例如MvcProject)中,由於某種原因,EF不會將名稱與Web.config中名爲「Northwind」(或「MvcProject .Northwind「),然後它只會創建一個默認爲本地SQLEXPRESS實例的連接字符串,其數據庫名爲」MvcProject.Northwind「。這將是一個空的數據庫。而且,當你意識到自己沒有連接到正確的數據庫時,你會想方設法弄清楚爲什麼你沒有收到數據。
我解決這個問題的方式(不是很優雅,但它是我發現修復它的最快方法):在DbContext類中添加一個構造函數,它使用web.config中的連接字符串的名稱調用基礎。
namespace MvcProject
{
public class Northwind : DbContext
{
public Northwind() : base("Northwind") {}
}
}
希望幫助別人那裏;-)
這一個解決了我的問題。謝謝 – fabriciorissetto 2014-03-22 21:58:52
官方文檔說你應該使用: base(「name = Northwind」) 我發現這是它的唯一工作方式。如果你測試「Forthwind」,你會發現它不會拋出異常,但是「name = Forthwind」會。 – Richard 2014-08-13 12:50:52
我認爲這是我的問題,但仍然可以指導我與我的問題http://stackoverflow.com/questions/42475840/entityframework-keeps-referring-to-a-copy-of-my-actual-database – Samra 2017-02-27 01:48:01
的EF couldn't找到我的連接,但是我用的連接字符串中的基礎():
namespace MvcProject
{
public class Northwind : DbContext
{
public Northwind() :
base("Data Source=servername;Initial Catalog=database;User ID=yourID;Password=yourPass;Trusted_Connection=False;") {}
}
}
剛測試連接和它的工作。
是的,它可以正常工作,但將連接字符串放入代碼中被認爲是不好的做法,例如,如果要在生產服務器中部署應用程序,則需要更改代碼中的連接字符串,重新構建解決方案並再次發佈。 – 2017-02-02 15:37:57
我面臨同樣的問題,並簡單地改變我的連接字符串名稱建議在web.config文件作爲上下文db的名稱,一切順利。
- 1. 我的連接字符串在哪裏?
- 2. EntityFramework在哪裏獲取連接字符串到我的本地數據庫?
- 3. EntityFramework單一連接字符串
- 4. 的EntityFramework連接字符串錯誤
- 5. 我的連接字符串在類庫中存儲在哪裏?
- 6. 在哪裏寫連接字符串?在app.config或web.config?
- 7. 你在哪裏存儲連接字符串?
- 8. 你在哪裏存儲數據庫連接字符串?
- 9. 代碼優先:連接字符串和數據庫在哪裏?
- 10. SqlDataSource在哪裏獲取連接字符串的默認列表?
- 11. 在哪裏存儲和hwo訪問連接字符串
- 12. 將字符串過濾器連接在哪裏
- 13. 我在哪裏可以獲得連接字符串信息?
- 14. App = EntityFramework在Sql連接字符串中做了什麼?
- 15. 在運行時提供連接字符串到EntityFramework DbContext
- 16. HttpHandler中的SubSonic ActiveRecord(連接字符串屬於哪裏?)
- 17. 哪裏存儲經典ASP的連接字符串?
- 18. 在哪裏拆分字符串文字
- 19. 字符串從哪裏來?
- 20. WSAT使用哪個連接字符串
- 21. 只爲EntityFramework保留一個數據庫連接字符串
- 22. 由EntityFramework和MVC連接字符串到SQL
- 23. 不同EntityFramework模型的連接字符串是否相同?
- 24. 在C#中使用字符串連接的字符串連接
- 25. 在哪裏把連接字符串放在一個n層應用程序中?
- 26. 連接兩列在哪裏
- 27. 連接在哪裏條款
- 28. 字符串字符連接
- 29. 比較字符串在哪裏條款
- 30. MVC在哪裏存儲字符串
創建一個與我的DbContext的類名完全相同的連接字符串 – Omu 2011-04-26 18:09:40
。爲什麼這可能不起作用? – 2011-04-27 08:44:47
嗯,我發現了這個問題。我在上下文構造器中設置數據庫的名稱,看起來如果有人這樣做,那麼它也必須是連接字符串的名稱!請投票... – 2011-04-27 09:05:39