gpt4 book ai didi

entity-framework - EF代码优先CTP5,对多对多表使用包含方法

转载 作者:行者123 更新时间:2023-12-04 08:31:29 24 4
gpt4 key购买 nike

我有类似以下的多对多关系表。

public class Shop{
public int Id { get; set; }
public virtual ICollection<ShopFacility> ShopFacilities { get; set; }
}

public class ShopFacility
{
public int Id { get; set; }
public int ShopId { get; set; }
public int FacilityId { get; set; }
public virtual Shop Shop { get; set; }
public virtual Facility Facility { get; set; }
}

public class Facility
{
public int Id { get; set; }
public virtual ICollection<ShopFacility> ShopFacilities { get; set; }
}

并且,获取商店信息。
using (var context = new DataContext())
{
return context.Shops.Include(s => s.ShopFacilities)
.Include("ShopFacilities.Facility") // This line
.First(x => x.Id == id);
}

我想做的是使用包含Lambda表达式的Include方法来实现多对多关系,而不是字符串。我尝试实现以下代码:
using (var context = new DataContext())
{
return context.Shops.Include(s => s.ShopFacilities)
.Include(s => s.ShopFacilities.Facility) // Cannot compile
.First(x => x.Id == id);
}

但是正如您所猜测的,我无法对其进行编译。实际上,第一个代码段运行良好,因此基本上可以,但是,我很好奇是否有解决方法。

任何帮助,将不胜感激,

最佳答案

尝试这个:

return context.Shops.Include(s => s.ShopFacilities.Select(f => f.Facility))
.First(x => x.Id == id);

但是,您应该遵循@Kristof在评论中建议的内容。

关于entity-framework - EF代码优先CTP5,对多对多表使用包含方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5247324/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com