我想向父母(“事宜”)添加一堆孩子(“要求”)。但是当我说以下话时:
matter.Claims.Add(claim);
我的Claims
为空/空。
这是我的代码:
public async Task<bool> CreateClaims(AddClaimsDataDto claimParams)
{
Matter matter;
matter = await _autoContext.Matters
.Where(m => m.MatterNumber == claimParams.Matter)
.FirstOrDefaultAsync();
if (matter == null)
{
matter = new Matter { MatterNumber = claimParams.Matter};
}
foreach(var trustName in claimParams.Names)
{
var claim = new Claim();
// fill claim properties here
matter.Claims.Add(claim); // Claims is null here!
}
_autoContext.Matters.Add(matter);
await _autoContext.SaveChangesAsync();
return true;
}
还有我的Matter
实体:
public class Matter
{
public Matter()
{
CreatedDate = DateTime.Now;
EditedDate = DateTime.Now;
}
public int Id { get; set; }
public string MatterNumber { get; set; }
public string InjuredPartyFirstName { get; set; }
public string InjuredPartyLastName { get; set;}
public ICollection<Claim> Claims { get; set; }
public DateTime CreatedDate { get; set; }
public string CreatedBy { get; set; }
public DateTime EditedDate { get; set; }
public string EditedBy { get; set; }
}
我的Claim
实体:
public class Claim
{
public Claim()
{
CreatedDate = DateTime.Now;
EditedDate = DateTime.Now;
}
public int Id { get; set; }
public int? ClaimNumber { get; set; }
public Matter Matter { get; set; }
public TrustGroup TrustGroup { get; set; }
public Attorney Attorney { get; set; }
public User Contact { get; set; }
public Status ClaimStatus { get; set; }
public DateTime DateAttorneyApproved { get; set; }
public DateTime DateExported { get; set; }
public ICollection<Injured> InjuredParty { get; set; }
public DateTime CreatedDate { get; set; }
public string CreatedBy { get; set; }
public DateTime EditedDate { get; set; }
public string EditedBy { get; set; }
}
答案 0 :(得分:2)
如果要更新实体框架子级列表,则必须急于或延迟加载它,然后再进行更改。参见Loading Related Data。
如果此问题为空,还必须初始化Claims属性。
using Microsoft.EntityFrameworkCore;
public async Task<bool> CreateClaims(AddClaimsDataDto claimParams)
{
Matter matter;
matter = await _autoContext.Matters
.Include(m => m.Claims) //Using eager loading here
.Where(m => m.MatterNumber == claimParams.Matter)
.FirstOrDefaultAsync();
if (matter == null)
{
matter = new Matter
{
MatterNumber = claimParams,
Claims = new List<Claim>() //Initialize the list here
};
}
foreach(var trustName in claimParams.Names)
{
var claim = new Claim();
matter.Claims.Add(claim);
}
_autoContext.Matters.Add(matter);
await _autoContext.SaveChangesAsync();
return true;
}