我是ASP.NET MVC的新手,只是搞亂了它,並試圖瞭解它是如何工作的。所以我決定對使用默認ApplicationDbContext
訪問的數據庫進行查詢。通常,如果數據庫在此之前沒有被實例化,那麼這個查詢將確保首先創建數據庫,然後進行查詢,對嗎?好了,這裏就是我所做的:ASP.NET MVC未能創建數據庫
// This is the default Index action in the Home controller:
public ActionResult Index()
{
var db = new ApplicationDbContext();
var usersCount = db.Users.Count();
return View();
}
我知道查詢是毫無意義的,但它的唯一目的就是爲它生成數據庫。事情就是這樣。嘗試執行查詢時(方法的第二行),我得到一個System.Data.SqlClient.SqlException
。
即使在檢查App_Data
文件夾時,我看到數據庫未創建。這可能是什麼原因?奇怪的是,這可以在我的臺式電腦上使用,但不能在我的筆記本電腦上使用。但是我注意到,當我在連接字符串中輸入無效的數據源(例如Data Source =。)時,我的臺式計算機上出現同樣的異常。所以也許會導致這種行爲的LocalDb發生了一些事情。
連接字符串:
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\aspnet-DefaultProject-20160731061747.mdf;Initial Catalog=aspnet-DefaultProject-20160731061747;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>
這是一個完整的異常:
An exception of type 'System.Data.SqlClient.SqlException' occurred in EntityFramework.dll but was not handled in user code
Additional information: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 52 - Unable to locate a Local Database Runtime installation. Verify that SQL Server Express is properly installed and that the Local Database Runtime feature is enabled.)
我會很感激,如果有人能拿出一個解決方案!
P.S:如果將數據源更改爲我的SQL Server Express服務器名稱,我的筆記本電腦上的所有內容都可正常工作。
這是通用數據庫連接失敗的問題。你的連接字符串有些問題,或者服務器沒有配置爲接受連接,或者防火牆阻止了它,或者SQL沒有安裝......等等。 – TZHX
我已經經歷過了。它不回答我的問題。每個ASP.NET MVC應用程序都帶有一個ApplicationDbContext和Models,因此編寫代碼並不是問題。 @MurrayFoxcroft –
我爲SQL投票沒有安裝:否則不應該模板EF啓動創建數據庫,如果它不存在? OP,嘗試在本地主機上設置一個帶有該名稱的空白數據庫,然後運行它。 – jleach