我有一种餐桌用品。产品在一对多关系中与产品描述相关。每个产品的ProductDescription可以有多行。如果产品描述有多个翻译,它将有多行。产品与语言有多对一的关系。语言有一个语言代码(en、es等)和一个languageID(也可以在productDescription中找到)。
我想让我的用户能够请求一个产品,并进一步告诉应用程序只返回特定语言的描述。
我很难在Linq to实体中实现这一点。我想生成这样的SQL:
SELECT * FROM Product p
JOIN ProductDescription pd ON p.ProductId = pd.ProductId
JOIN (SELECT * FROM Language WHERE AlternateCode = 'es') AS l ON pd.LanguageId = l.LanguageId
(alternatecode是语言代码的字段名)
有人知道怎么做吗?我现在剩下的就是把所有的语言都拉下来,然后用linq-to对象过滤掉它们,这些对象肯定不太理想。我可以在一个循环中获得每个产品的语言代码,但这需要多次SQL往返,我也不希望这样。
谢谢你的帮助!