如何使用entity framework 6 mysql更新记录

xriantvc  于 2021-06-24  发布在  Mysql
关注(0)|答案(1)|浏览(361)

我正在寻找使用entity framework 6 mysql更新记录的正确方法。
下面是我现在用的。

public void Update(User user)
    {
        using (var ctx = new DataSystemDbContext())
        {
            ctx.Users.Attach(user);
            ctx.Entry(user).State = EntityState.Modified;
            ctx.SaveChanges();
        }
    }

在我的单元测试中。

[TestMethod]
    public async Task User_Update()
    {

        var userService = new UserService();
        var user = userService.GetById(1);
        user.FullName = "Test Fullname";
        userService.Update(user);
        var updatedUser = userService.GetById(1);

        Assert.AreEqual(user.FullName, updatedUser.FullName);
    }

当它执行时,我的所有用户记录都会更新。
这也和我的另一个帖子有关。但在我的另一篇文章中,它使用了一个真实的上下文,不像这个。
mysql entity framework 6更新首先影响所有行代码

fkaflof6

fkaflof61#

我通过注解掉或者不使用为crud生成的过程来修复这个问题。

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
     base.OnModelCreating(modelBuilder);    
     // Mapp all entities in a single line.    
     //modelBuilder.Types().Configure(t => t.MapToStoredProcedures());
}

生成的sql

UPDATE `Users` SET `Email`=@gp1 WHERE `Id` = 6
-- @gp1: 'myemail@gmail.com' (Type = String, IsNullable = false, Size = 17)
-- Executing asynchronously at 25/06/2018 8:30:21 AM +08:00
-- Completed in 2 ms with result: 1

我不确定mysql提供程序是否有bug。
实体框架v6.1.3
mysql.data.entity版本6.10.7
mysql.data版本6.10.7

相关问题