내 문제는 설명하기가 약간 어렵 기 때문에 나와 함께 감당할 수있는 최선의 방법을 설명하고 가능한 한 많은 정보를 제공 할 것입니다.두 개의 IQueryables에 합류하기
[Table("Items")]
public class Item : BaseModel
{
[Key]
[Column("Id")]
public Guid Id { get; set; }
[Column("DescriptionId")]
public Guid DescriptionId { get; set; }
[ForeignKey("Id")]
public LanguageText LanguageText { get; set; }
[ForeignKey("DescriptionId")]
public LanguageText DescriptionText { get; set; }
}
[Table("Shops")]
[Serializable]
public class Shop: BaseModel
{
[Key]
[Column("Id")]
public Guid Id { get; set; }
[Column("ItemId")]
public Guid? ItemId{ get; set; }
[Column("Closed")]
public DateTime? Closed{ get; set; }
[ForeignKey("ItemId")]
public Item ItemModel{ get; set; }
}
내 쿼리
var items= itemRepository.GetAll()
.Include(x => x.LanguageText)
.Include(x => x.DescriptionText);
var querableShops = shopRepository.GetAll()
.Where(x =>!x.Closed.HasValue || (x.Closed.HasValue && x.Closed.Value >= Expiration))
.GroupJoin(items, s => s.ItemId, i => i.Id, (x, y) => x);
내 쿼리를 수행 할 때 재미있는 일이 발생합니다
그래서 나는 두 개의 테이블이있다. querableShops를 디버그하고 ItemModel을 체크 아웃하려고 할 때 항목의 결과보기를 먼저 확장하지 않으면 null입니다. 이 때문에 항목을 데이터 그리드에 표시하지 않습니다. 단, 사전에 디버그 할 때 항목을 수동으로 확인하지 않는 한. 문제는 내 항목이 IQueryable, IEnumerable로 변환하려고했지만 그 중 하나는 내 문제를 해결하지 못했다고 생각합니다.
'GetAll'은 어떻게됩니까? 그리고 저장소는 동일한 맥락을 공유합니까? –
GetAll()은 DBSet을 반환합니다. 예 저장소는 동일한 컨텍스트에 있습니다. –
프로젝트에서 지연로드가 활성화되어 있으므로 열심히로드해야하므로 ToList()로 변환하면 도움이됩니다. (x => x.LanguageText) . –