我的问题有点难以解释,所以请耐心等待,我将尽力解释我所能提供的最好信息,并提供最多的信息。加入两个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时,它是空的,除非我首先展开项目的结果视图。因此,我的项目不会显示在数据网格中,除非我事先在调试中手动检查项目。我认为问题在于我的项目是IQueryable,我确实尝试将其转换为IEnumerable,但这并没有解决我的问题。
'GetAll'会发生什么?并且这些存储库是否共享相同的上下文? – 2014-12-09 15:20:25
GetAll()返回DBSet。是的,存储库位于相同的上下文中 – 2014-12-09 15:26:43
我认为您的项目中启用了延迟加载,因此您需要加载它们,因此将它们转换为ToList()将有所帮助。 (x => x.LanguageText) 。 – 2014-12-10 03:19:02