2013-04-14 31 views
1

我有這個模型在我的.mdf DB:EF的SaveChanges()不會對我的影響密度纖維板DB

enter image description here

這兩個表中沒有數據:

enter image description here

PersonID是一個外鍵。

這是我的EF模型圖:

enter image description here

這是添加人的代碼。

namespace DBTest 
{ 
    class Class1 
    { 
     MyDBEntities db; 
     public Class1() 
     { 
      db = new MyDBEntities(); 
      AddPerson(); 
     }   


     void AddPerson() 
     { 
      Person p = new Person(); 
      p.ID=1; 
      p.NAME="abcd"; 
      db.AddToPerson(p); 
      db.SaveChanges(); 
     } 
    } 
} 

後,我從主調用類:

namespace DBTest 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Class1 a = new Class1(); 
     } 
    } 
} 

我想看看有沒有在我的.mdf數據庫的任何變化。
我發現,數據庫仍然是空的(後清爽):

enter image description here

有沒有人有一個想法是什麼,我需要做的,會導致數據庫更新? 我在做什麼錯?

編輯:

連接字符串:

<connectionStrings> 
    <add name="DBTest.Properties.Settings.XXXXConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\XXXX.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient" /> 
    <add name="MyDBEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\MyDB.mdf;Integrated Security=True;User Instance=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" /> 
    </connectionStrings> 
+0

Hyave你找到了這個問題的解決方案?我在VS中完成了數據庫,並且遇到了與您所描述的相同的問題。你能解釋你如何解決這個問題嗎? – Error

回答

3

你沒告訴我們你的連接字符串 - 但我只是從你彙報的「症狀」的猜測。

整個用戶實例和AttachDbFileName =方法有缺陷 - 最好!當運行在Visual Studio中的應用程序,它會圍繞.mdf文件被複制(從App_Data目錄輸出目錄 - 通常.\bin\debug - 在你的應用程序運行)和最有可能,你INSERT的作品就好了 - 但你只是看着錯誤.mdf文件到底!

如果你想堅持使用這種方法,然後嘗試把一個斷點在myConnection.Close()呼叫 - 然後檢查.mdf文件與SQL Server管理Studio Express的 - 我幾乎可以肯定你的數據是存在的。

在我看來真正的解決方案

  1. 安裝SQL Server Express(和你已經做到這一點無論如何)

  2. 安裝SQL Server Management Studio中快速

  3. 中創建您的數據庫SSMS Express,給它一個邏輯名稱(例如MyDB

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

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

    和其他一切是正是和以前一樣......