0
아래의 1 대 다수 테이블을 가지고 있습니다. 다음 코드를 사용하여 기존 행을 편집 할 때 문제가 발생합니다. 나는 동부 표준시 관계에 꽤 새로운 것을 이해하므로 자세한 설명은 크게 감사하겠습니다. null 값을 반환하는 이유는 무엇입니까? Entity Framework를 사용하여 기존 행을 업데이트하는 방법?
public void UpdateReportGroup(TReportHeaderModel model)
{
if (model.THeaderTitle == null)
{
throw new Exception("Report Group Title must be filled in");
}
if (model.THeaderTitle.Length <= 0)
{
throw new Exception("A Report Group Title must be filled in.");
}
using (var connection = new TReportEntitiesConnection())
{
var header = connection.THeaders.SingleOrDefault(f => f.ID == model.ID);
var reports = connection.TReport.Where(f => f.THeaderID == model.ID);
connection.TReport.RemoveRange(reports);
foreach (var urls in model.TReports)
{
connection.TReport.Add(new TReport()
{
TReportName = urls.name,
URL = urls.url,
});
}
connection.THeaders.Add(header);
connection.SaveChanges()
}
}
매번
, 나는 그것이 'TReport'테이블에 null 값을주고, 그것을 디버깅합니다. 내 새 행 만들기는 다음 코드로 완벽하게 작동합니다. 의미, 올바른 필드 이름으로 올바른 양식을 반환합니다. 당신이 볼 수 있듯이public void CreateReport(TReportHeaderModel model)
{
if (model.THeaderTitle == null)
{
throw new Exception("Report Group Title must be filled in");
}
if (model.THeaderTitle.Length <= 0)
{
throw new Exception("A Report Group Title must be filled in.");
}
using (var connection = new TReportEntitiesConnection())
{
var header = new THeader()
{
ClientID = model.ClientID,
THeaderTitle = model.THeaderTitle,
RowNumber = model.RowNumber
};
foreach (var urls in model.TReports)
{
header.TReports.Add(new TReport()
{
TReportName = urls.name,
URL = urls.url
});
}
connection.THeaders.Add(header);
connection.SaveChanges();
}
}
것은, 내가 DI 패턴을 다음하고, 따라서 나는 아래로 내 컨트롤러에서이 두 가지 방법을 호출 오전 :
[HttpPost]
public ActionResultModel CreateReportAPI([FromBody] TReportHeaderModel model) //attempt 3
{
try {
if (ModelState.IsValid)
{
var isValid = _tReportingService.HeadernameExists(model.THeaderTitle);
if (!isValid)
{
Console.WriteLine("it does not exist");
var user = this.GetCurrentUserAccount();
model.ClientID = user.SelectedClient.ID;
_tReportingService.CreateReport(model);
}
else //Update method comes till here and it goes //straight to the error
{
Console.WriteLine("it exists");
var user = this.GetCurrentUserAccount();
model.ClientID = user.SelectedClient.ID;
_tReportingService.UpdateReportGroup(model);
}
}
return new ActionResultModel()
{
Success=true,
Message="Report Group Successfully Saved."
};
}
TReport 검색을위한 Where 문 다음에 ToList()를 추가하십시오. – master2080
@ master2080 했어. 그것은 여전히 나에게 오류를주고있다. –
하나 이상의 엔터티에 대한 유효성 검사가 실패했습니다.라는 오류 메시지가 나타납니다. 자세한 내용은 'EntityValidationErrors'속성을 참조하십시오. –