2013-02-01 43 views
0

我正在使用實體框架來連接MySql。我創建與MySQL數據庫中的實體數據模式,它會自動生成web.config中的連接字符串,它是在我的情況如下: -實體框架:調用保存更改時出錯

<add name="entityframework1" connectionString="metadata=res://*/EntityFramework.csdl|res://*/EntityFramework.ssdl|res://*/EntityFramework.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=localhost;User Id=root;database=entityframework&quot;" providerName="System.Data.EntityClient" /> 

現在我想保存記錄在數據庫和代碼如下: -

 employee emp = new employee(); 
     emp.Name = txtName.Text; 
     emp.Age = Convert.ToInt32(txtAge.Text); 

     using (entityframework context = 
       new entityframework()) 
     { 

      context.AddToemployees(emp); 
      if (context.SaveChanges() == 1) 
      { 
       lblMsg.Text = "Saved Successfully."; 
      } 
     } 

它給錯誤,如果具有「context.SaveChanges」 條件對

「未設置爲對象的實例對象引用」。

我也試圖通過在連接字符串在創設情境

string connectionstring = "SERVER=localhost;DATABASE= entityframework ;UID= root;"; 

的時間,但它給錯誤「關鍵字不支持:「」服務器「」 這是我的第一次努力。實體框架,有沒有人來告訴我。

+0

當我改變我的申請表3.5到.NET框架解決問題(與你的MySQL .NET連接器的相應版本替換版本字符串) 4.0 – mitali

回答

0

如果你可以從服務器獲取數據,然後連接字符串是好的。

至於調用SaveChanges()嘗試調用context.ChangeTracker.DetectChanges()首先,作爲成功條件,您可以將實體的初始ID設置爲-1,然後檢查它是否大於等於0.(即,如果您的PrimaryKey也是Autoincrement/Identity)

+0

不,我無法檢索數據表單服務器,你能告訴我這裏有什麼問題。 – mitali

+0

ConnectionString問題。我建議你重新生成連接sting,它不包含基本的東西,如實例名稱或憑證 – dutzu

0

您需要還添加以下到你的web.config文件

<system.data><DbProviderFactories> 
    <clear /> 
    <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.6.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /> 
</DbProviderFactories></system.data>