EF에서 다소 이상한 문제가 있습니다. MfgSite가 각 시나리오와 관련된 시나리오 목록을 표시하고 있습니다. 아래 모델입니다 : 나는 다음이 코드가 내 시나리오 컨트롤러 색인 작업에서엔티티 프레임 워크가 하위 개체를 null로 설정합니다.
//Models
public partial class Scenario
{
public string Name { get; set; }
public bool IsFinal { get; set; }
public Guid Uid { get; set; }
public string Username { get; set; }
public string Description { get; set; }
public Guid MfgSiteUid { get; set; }
//navigation property
public MfgSite MfgSiteU { get; set; }
}
public partial class MfgSite
{
public string MfgSiteCommonName { get; set; }
public string MfgSiteState { get; set; }
public string MfgSiteFunction { get; set; }
public string MfgSiteDesc { get; set; }
public Guid Uid { get; set; }
//navigation property
public Scenario Scenario { get; set; }
}
(내가 처음 Scaffold-DbContext를 사용하여 DB에서 모델을 생성합니다). 반환 된 목록에는 시나리오의 각 고유 MfgSiteUid에 대해 하나의 항목을 제외한 MfgSiteU가 모두 null로 설정됩니다.
//Scenario Controller Index Action
public async Task<IActionResult> Index()
{
var sContext = _context.Scenario.Include(s => s.MfgSiteU);
return View(await sContext.ToListAsync());
}
보기에 표시 할 때 (모든 열 표시가)는 다음과 같습니다 다음 s.MfgSiteU이 s.MfgSiteUid 정확하고 null이 아닌 경우에도 널이기 때문에
빈 열이 있습니다. MfgSiteCommonName은 두 번째 행의 경우 "Test Site 1"이어야하고 세 번째 및 네 번째 행의 경우 'Test Site 2'여야합니다.
이 문제의 원인은 무엇이고 잠재적 수정은 무엇입니까? 디버깅의 일환으로 DbSet에서 foreach를 사용하여 한 번에 하나의 시나리오를 탐색하고 각 시나리오를 수동으로 목록에 추가하려고했습니다. MfgSiteU가 개별 객체에서 null이 아니라는 것을 알 수 있습니다. 그러나 끝 부분을 반복하면 MfgSiteU가 이전 객체를 null로 재설정하는 방법도 있습니다.
(생성 된) 관계가 잘못되었습니다. 여러분의 데이터에 따르면, MfgSite는 일대 다'Scenario' (MfgSite의 네비게이션 속성은'public ICollection Scenarios {get; set;}' –
@IvanStoev, 탁월한 캐치! Scaffold-DbContext 생성 방법에 대해 당황 스러웠습니다 1-1. FK가 시나리오 표에 나와 있으므로 컬렉션을 생성해야합니다. 수동으로 모델을 수정했는데 문제가 해결되었습니다. 이 질문을 답으로 게시 할 수 있다면 기꺼이 받아 들일 것입니다. – user3885927