gpt4 book ai didi

c# - 将对象两次插入到 EF 6

转载 作者:太空宇宙 更新时间:2023-11-03 21:13:44 25 4
gpt4 key购买 nike

如何在数据库中两次插入具有不同值的对象当对象 User 具有 Code > 10 时,它会插入 2 个对象,但有些 EF 如何更新第一个插入对象的值。

public class User
{
public int Id { get; set; }
public string Name { get; set; }
public int Code { get; set; }

}

在我的操作中,我正在保存到数据库

// Post Action
uow.Users.Add(user);
uow.Commit(); // save first time
if (user.Code > 10)
{
user.Name = "NAS";
uow.Users.Add(user);
uow.Commit(); //save second time
}

我的对象是

User = (Name = "Mike",Code=12)

数据库结果为

    Result Database
id =1 Name="NAS" Code=12
id =2 Name="NAS" Code=12

最佳答案

这是正确的行为;那么为什么会这样:

  • 当您第一次保存时,它会使用您最初创建的 user 对象在数据库中创建一个新条目。
  • 当你第二次保存时,它会获取原始对象,因为没有更好的术语,它有一个数据库引用并更新对象的名称,并且它还会再次将相同的对象添加到集合中;这就是您在数据库中看到相同信息的原因。

您的代码应该是:

var user = new User { Name = "Mike", Code = 12 };
uow.Users.Add(user);
uow.Commit(); // save first time

if (user.Code > 10)
{
var newUser = new User { Name = "NAS", Code = user.Code };
uow.Users.Add(newUser);
uow.Commit(); //save second time
}

你的结果应该是:

Result Database
id = 1 Name = "Mike" Code = 12
id = 2 Name = "NAS" Code = 12

关于c# - 将对象两次插入到 EF 6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35901990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com