我是 c# 新手,我在保存/更新数据方面有一个基本问题。有两个类:
public class User
{
public int UserId { get; set; }
public string Email { get; set; }
public string Login { get; set; }
public string Password { get; set; }
public DateTime RegisteredDate { get; set; }
public class Task
{
public int TaskId { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public string Comment { get; set; }
public User DeclaredBy { get; set; }
}
我正在尝试使用DeclaredBy
字段集保存任务对象(新的或更新的)
dbContext.Tasks.AddOrUpdate(task);
dbContext.SaveChanges();
DeclaredBy
字段中设置的用户有一个ID,但执行后SaveChanges()
在数据库中出现了一个新的用户记录。
这就是 EF 的工作方式,如果您将实体与其他相关实体一起添加,则两者都将存储在 DB 中。如果你只想存储一个,那么你需要将其他导航属性设置为 null 并且只设置外键 id,目前你没有,你应该添加属性:
public int DeclatedById { get; set; }
顺便提一句。这是一个很常见的问题,很多项目在 db 中有重复的值。
也许我应该补充一点,只有当实体没有被 EF 上下文跟踪并附加到它时才会发生这种情况。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句