none
EF6中,一个对象的2次插入到数据库 RRS feed

  • 问题

  • 我一个user 对象要插入数据库,在code>10的时候,更新这个象,再次插入数据库。

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

    下面是2次插入的动作

    // 提交
         uow.Users.Add(user);
         uow.Commit(); // 第一次
        if (user.Code > 10)
        {
            user.Name = "NAS";
            uow.Users.Add(user);
            uow.Commit(); //第二次
        }

    第一次user对象的值是:

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

    但是数据库的结果是:

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

    这是什么原因啊?


    2016年3月27日 2:35

答案

  • 你好,

    应该是缓存的问题。我建议在第二次插入的时候,新建一个user对象,象这样:

    ar user = new User { Name = "Mike", Code = 12 };
    uow.Users.Add(user);
    uow.Commit();  // 第一次保存
    if (user.Code > 10)
    {
        var newUser = new User { Name = "NAS", Code = user.Code };
        uow.Users.Add(newUser);
        uow.Commit(); // 第二次保存
    }

    这样的话,数据库就不会出现同样的数据了。

    Best regards,

    Cole Wu

    2016年3月27日 4:38
    版主