调用context.savechanges时,带有MVC3的MySql会出错

时间:2012-03-08 10:35:52

标签: mysql asp.net-mvc-3 optimistic-concurrency

我正在尝试让我的MVC3应用程序使用MySql数据库而不是Sql Server 2008.我在Mysql中创建了相关的数据库和对象。并更新了我的web.config文件中的连接字符串以引用MySql.Data.MySqlClient。

当我运行我的应用程序并尝试登录时,我收到错误

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上定义任何触发器。该应用程序是MVC3与EF Code First。 谢谢,

1 个答案:

答案 0 :(得分:0)

如果有其他人遇到这个问题,问题就在于Guid,尽管如此。要克服此问题,请将以下内容添加到连接字符串

Old Guids = true

例如,我的连接字符串现在看起来像这样。

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