2012-03-08 40 views
0

我想讓我的MVC3應用程序使用MySql數據庫,而不是SQL Server 2008.我已經在Mysql中創建了關聯的數據庫和對象。並更新我的web.config文件中的連接字符串以引用MySql.Data.MySqlClient。調用context.savechanges時,MVC3 MySql給出錯誤

當我運行我的應用程序,並嘗試登錄,我收到錯誤

Store update, insert, or delete statement affected an unexpected number of rows (0). Entities may have been modified or deleted since entities were loaded. Refresh ObjectStateManager entries. 

我有一個自定義的MembershipProvider和驗證過程中,我有以下

using (MyContext context= new MyContext()) 
{ 
     --some checks here 
     --- 
     if (verificationSucceeded) 
     { 
      user.passwordFailuresSinceLastSuccess = 0; 
     } 
     else 
     { 
      int failures = user.passwordFailuresSinceLastSuccess; 
      if (failures != -1) 
      { 
       user.passwordFailuresSinceLastSuccess += 1; 
       user.lastPasswordFailureDate = DateTime.UtcNow; 
      } 
     } 
     context.SaveChanges(); ----THIS IS WHERE IT FALLS OVER 
     -- some other code here 
    } 

上面的代碼在Sql Server 2008中工作得非常好,但只能通過MySql完成。任何想法如何我可以解決這個好嗎?

我沒有在基礎表btw上定義任何觸發器。該應用程序是EF Code First的MVC3。 謝謝,

+0

只想補充一點,此表的主鍵是hte user_id,它在基礎表中定義爲二進制(16),在應用程序中定義爲GUID。不知道這是否導致問題。 – SimpleUser 2012-03-08 11:44:52

回答

0

如果有其他人有這個問題,問題是與我一樣的Guid。爲了克服這個,添加以下到您的連接字符串

舊的GUID =真

因此,例如,我的連接字符串看起來現在這個樣子。

<add name="MyDB" connectionString="Server=localhost; Database=mydatabase; Uid=user; Pwd=mypass; Old Guids=true;" providerName="MySql.Data.MySqlClient" />