[英]One to many relationship in Entity core deleting the previous records in child table as part of parent-child update
[英]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.