簡體   English   中英

EF如何更新單表中具有父子關系的'parentId'?

[英]How does EF update 'parentId' that has relationship parent-child in single table?

我的模型類是:

public class Department
{
    [Key]
    public long Id { get; set; }

    [Required]
    public string DepartmentName { get; set; }

    public virtual Department Parent { get; set; }
    public long? ParentId { get; set; }
    public virtual ICollection<Department> SubDepartments { get; set; }

}

DbContext 是:

public class MyDbContext : DbContext
{
    public DbSet<Department> Departments { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Department>()
            .HasMany(s => s.SubDepartments)
            .WithOptional(s => s.Parent)
            .HasForeignKey(s => s.ParentId);


        base.OnModelCreating(modelBuilder);
    }
}

獲取子部門:


public List<Department> GetSubDepartmentList()
{
    var dbContext = new MyDbContext();
    var result = dbContext.Departments.ToList();
    return result;
}

像這樣更新:

var result = GetSubDepartmentList();
for (int i = 0; i < result.Count; i++)
{
    result.DepartmentName = "Name";
    result.ParentId = 3;
}
db.SaveChanges();

我的定義是這樣的。 EF 正在更新除“parentId”之外的其他字段。 我如何更新“parentId”?

根據您的評論,您可能必須在循環中查詢數據庫。 就像是:

var result = GetSubDepartmentList();
for (int i = 0; i < result.Count; i++)
{
    var department = db.Departments.FirstOrDefault(a => a.Id == result[i].Id);
    if(department != null)
    {
        department.DepartmentName = "Name";
        department.ParentId = 3;
        db.SaveChanges();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM