C# 在linq to sql中插入子记录后刷新实体
我正在插入与现有父记录关联的子记录。如何刷新父记录以显示所有记录,包括新插入的子记录C# 在linq to sql中插入子记录后刷新实体,c#,linq-to-sql,C#,Linq To Sql,我正在插入与现有父记录关联的子记录。如何刷新父记录以显示所有记录,包括新插入的子记录 context.Refresh(RefreshMode.OverwriteCurrentValues,entity)不起作用 我尝试的一个更完整的例子: Location newLocation = Json.deserialize<Location>(json); if (newLocation != null) { IEnumerable<string> zipCodes =
context.Refresh(RefreshMode.OverwriteCurrentValues,entity)
不起作用
我尝试的一个更完整的例子:
Location newLocation = Json.deserialize<Location>(json);
if (newLocation != null) {
IEnumerable<string> zipCodes = Regex.Split(newLocation.zipCodes, @"[\s,;]+");
// this verifies the new zipcodes against a table of all US zipcodes and returns matches
var newLocationZipCodes = _zipCodeRepository.match(zipCodes).Select(item => new LocationZipCode { idLocation = newLocation.id, state = item.state, zipcode = item.zipcode });
// get the parent entity
var domainLocation = _unitOfWork.locationRepository.getFirst(l => l.id == newLocation.id);
// insert child entities
if (newLocationZipCodes.Any()) {
_unitOfWork.locationZipCodeRepository.insertAll(newLocationZipCodes);
_unitOfWork.saveChanges(ConflictMode.ContinueOnConflict);
}
// this isn't working
_unitOfWork.refresh(RefreshMode.OverwriteCurrentValues, domainLocation);
return domainLocation;
}
我没有刷新上下文,而是改变了将子记录插入数据库的方式。所以不是
_unitOfWork.locationZipCodeRepository.insertAll(newLocationZipCodes);
我在做这个
domainLocation.LocationZipCodes.AddRange(newLocationZipCodes);
所以更新后的代码看起来是这样的
Location newLocation = Json.deserialize<Location>(json);
if (newLocation != null) {
IEnumerable<string> zipCodes = Regex.Split(newLocation.zipCodes, @"[\s,;]+");
var newLocationZipCodes = _zipCodeRepository.match(zipCodes).Select(item => new LocationZipCode { idLocation = newLocation.id, state = item.state, zipcode = item.zipcode });
var domainLocation = _unitOfWork..locationRepository.getFirst(l => l.id == newLocation.id);
if (newLocationZipCodes.Any()) {
domainLocation.LocationZipCodes.AddRange(newLocationZipCodes);
_unitOfWork.saveChanges(ConflictMode.ContinueOnConflict);
}
return new Mapper<DomainLocation, Location>(new LocationMapTemplate()).map(domainLocation);
}
Location newLocation=Json.反序列化(Json);
if(newLocation!=null){
IEnumerable zipCodes=Regex.Split(newLocation.zipCodes,@“[\s,;]+”;
var newLocationZipCodes=_zipCodeRepository.match(zipCodes).Select(item=>newlocationzipcode{idLocation=newLocation.id,state=item.state,zipcode=item.zipcode});
var domainLocation=\u unitOfWork..locationRepository.getFirst(l=>l.id==newLocation.id);
if(newLocationZipCodes.Any()){
domainLocation.LocationZipCodes.AddRange(newLocationZipCodes);
_unitOfWork.saveChanges(ConflictMode.ContinueOnConflict);
}
返回新映射器(new LocationMapTemplate()).map(domainLocation);
}
domainLocation.LocationZipCodes.AddRange(newLocationZipCodes);
Location newLocation = Json.deserialize<Location>(json);
if (newLocation != null) {
IEnumerable<string> zipCodes = Regex.Split(newLocation.zipCodes, @"[\s,;]+");
var newLocationZipCodes = _zipCodeRepository.match(zipCodes).Select(item => new LocationZipCode { idLocation = newLocation.id, state = item.state, zipcode = item.zipcode });
var domainLocation = _unitOfWork..locationRepository.getFirst(l => l.id == newLocation.id);
if (newLocationZipCodes.Any()) {
domainLocation.LocationZipCodes.AddRange(newLocationZipCodes);
_unitOfWork.saveChanges(ConflictMode.ContinueOnConflict);
}
return new Mapper<DomainLocation, Location>(new LocationMapTemplate()).map(domainLocation);
}