DbContext删除父对象Id



我遇到了一个非常奇怪的问题。。。这是什么…当我比较来自某个政府服务的数据,并检查我的数据库中最后一个出生的孩子是否与来自该服务的数据相同时,在更新parent-lastBornChild后,它失去了与parent-id的连接,并在数据库中更新为ParentId为NULL。

我知道这段代码应该写得更好,但我想知道为什么ef将我的lastBornChild.ParentId更改为NULL。

public class MyService : IMyService
{
MyService(DataDbContext context)
{
_context = context;
}

private DateTime FindYoungestChild(int parentId)
{
var lastChild = _context.Childs.Where(i => i.Parent.Id == parentId).OrderByDescending(d => d.BirthDate).FirstOrDefault();
if (lastChild == null)
return DateTime.MinValue;
else
return lastChild .BirthDate;
}
public Parent UpdateFamilyHistory(Parent parent)
{
DateTime lastStatusTransDate = FindYoungestChild(parent.Id);
var childs= new List<Child>();
var updateChildList = <some goverment public service response>(d => d.DateTimeCreated > lastStatusTransDate).ToList();
foreach (var item in updateChildList)
{
var newChild = new Child
{
Name = item.Name,
BirthDate = item.BirthDate;
};
childs.Add(newChild );
}
parent.Childs = childs;
_context.Update(parent);
_context.SaveChanges();
return parent;
}
}

试试这个:

var childs = new List<Child>();
foreach (var item in updateChildList)
{
var newChild = new Child
{
ParentId = parent.Id,
Name = item.Name,
BirthDate = item.BirthDate
};
childs.Add(newChild);
}
_context.Childs.AddRange(childs);
_context.SaveChanges();

最新更新