簡體   English   中英

實體框架SaveChanges無法正常工作

[英]Entity Framework SaveChanges is not working

我有一個C#winforms應用程序和一個SQL Server .mdf數據庫文件。

我嘗試使用實體框架。 從數據庫中檢索數據時,它的效果很好,但是在調用.SaveChanges()什么也沒有發生。 沒有錯誤,沒有異常,也沒有保存任何更改。

這個問題使我發瘋。 我發現了一堆幾乎相同的問題,但都沒有答案適合我的情況。

我的代碼如下所示:

using (World_ParkingEntities context = new World_ParkingEntities())
{
   client _client = context.CreateObject<client>();
   _client.name = name;
   _client.mobile_number = phoneNo;
   _client.email = email;
   context.AddToclients(_client);
   context.SaveChanges();
}

我的連接字符串:

<add name="World_ParkingEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\World_Parking.mdf;Integrated Security=True;User Instance=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" /></connectionStrings>

整個用戶實例和AttachDbFileName =方法都有缺陷-充其量! 在Visual Studio中運行應用程序時,它將在.mdf文件周圍復制(從App_Data目錄復制到輸出目錄-通常是.\\bin\\debug應用程序運行所在的位置),並且很可能 INSERT可以正常工作-但最后您只是看錯了.mdf文件

如果您要堅持這種方法,請嘗試在context.SaveChanges();之后放置一個斷點context.SaveChanges(); 調用-然后使用SQL Server Mgmt Studio Express檢查.mdf文件-我幾乎可以確定您的數據在那里。

我認為真正的解決方案

  1. 安裝SQL Server Express(並且您已經完成了此操作)

  2. 安裝SQL Server Management Studio Express

  3. SSMS Express中創建數據庫,並為其指定一個邏輯名稱(例如World_Parking

  4. 使用其邏輯數據庫名稱 (在服務器上創建時提供)連接到該數據庫 -並且不要弄亂物理數據庫文件和用戶實例。 在這種情況下,您的連接字符串將類似於:

     Data Source=.\\\\SQLEXPRESS;Database=World_Parking;Integrated Security=True 

    和其他一切是完全一樣的前...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM