![](/img/trans.png)
[英]Entity Framework 4.1 code first model compatibility issue after changing database from embedded to SQL Server Express
[英]Entity Framework 4.1 is not adding any rows to SQL Server Express database
使用帶有SQL Server Express .mdf
數據庫的Entity Framework 4.1。
為了進行測試,我嘗試使用WPF應用程序中的實體模型對SQL Server Express數據庫執行CRUD操作。
我是這個概念的新手,因此按照視頻教程進行了編碼,
我創建了單個非常簡單的表的實體模型。 我在cs文件中編寫了簡單的代碼,使用以下代碼執行了將一行添加到數據庫的操作
testEntities db = new testEntities();
TestTable tb = new TestTable();
tb.Name = txtName.Text;
tb.Email = txtMail.Text;
db.TestTables.AddObject(tb);
db.SaveChanges();
但是,如果我返回數據庫,則不會添加任何數據。 請告訴我這里出了什么問題??
這是我的連接字符串
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="testEntities"
connectionString="metadata=res://*/DBModel.csdl|res://*/DBModel.ssdl|res://*/DBModel.msl;provider=System.Data.SqlClient;provider connection string="data source=.\SQLEXPRESS;attachdbfilename=|DataDirectory|\test.mdf;integrated security=True;connect timeout=30;user instance=True;multipleactiveresultsets=True;App=EntityFramework""
providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>
整個用戶實例和AttachDbFileName =方法都有缺陷-充其量! Visual Studio將圍繞.mdf
文件復制(從DataDirectory
到正在運行的應用程序的輸出目錄),並且很可能您的INSERT
可以正常工作-但最終您只是看錯了.mdf
文件 !
如果您要堅持這種方法,請嘗試在.SaveChanges()
調用上放置一個斷點,然后使用SQL Server Mgmt Studio Express檢查正在運行的應用程序目錄中的.mdf
文件-我幾乎可以確定您的數據在那里。
我認為真正的解決方案是
安裝SQL Server Express(並且您已經完成了此操作)
安裝SQL Server Management Studio Express
在SSMS Express中創建數據庫,給它一個邏輯名稱(例如TestDatabase
)
使用其邏輯數據庫名稱 (在服務器上創建時提供)連接到該數據庫 -並且不要弄亂物理數據庫文件和用戶實例。 在這種情況下,您的連接字符串將類似於:
Data Source=.\\\\SQLEXPRESS;Database=TestDatabase;Integrated Security=True
和其他一切是完全一樣的前...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.