2012-03-08 68 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" />