为了账号安全,请及时绑定邮箱和手机立即绑定

实体左连接替换 SQL

实体左连接替换 SQL

C#
慕森卡 2021-10-24 19:39:59
我习惯于使用 SQL 左连接来获取所有可用选项的列表并确定当前选择了哪些项目。我的表结构看起来像这样Table MainRecord -- recordId | mainRecordInfoTable SelectedOptions -- recordId | optionIdTable AvailableOptions -- optionId | optionValue我的查询看起来像这样SELECT optionValue, IIF(optionId IS NULL, 0, 1) AS selectedFROM AvailableOptions AS aLEFT JOIN SelectedOptions AS s ON s.optionId = a.optionId AND a.recordId = 'TheCurrentRecord'我试图用实体框架替换它,所以我需要模型和查询的帮助——它们都需要更正。public class MainRecord{    public int recordId { get; set; }    public string mainRecordInfo { get; set; }    [ForeignKey("recordId")]    public List<SelectedOptions> selectedOptions { get; set; }}public class SelectedOptions{    public int recordId { get; set; }    public int optionId { get; set; }}public class AvailableOptions{    public int optionId { get; set; }    public string optionValue { get; set; }}询问IQueryable<AvailableOptions> options = from o in context.AvailableOptions select o;我可以获得可用选项的列表,但如何获取列表并知道选择了哪些选项?
查看完整描述

2 回答

?
慕容708150

TA贡献1831条经验 获得超4个赞

不是一个完整的答案,但了解您从模型中获得的导航属性确实很好。这是一个查询,很可能不是您想要的,但可以证明它


from ao in _db.AvailableOptions

where ao.recordId == "TheCurrentRecord" && ao.SelectedOptions.OptionId == 1

select new

MyPoxo {ao.SelectedOptions.Value ?? 0};

因此,您可以浏览由 FK 指定的连接,而不仅仅是让 o 导航。在这个例子中,我假设 AvailableOptions 有一个到 SelectedOptions 的链接。


查看完整回答
反对 回复 2021-10-24
  • 2 回答
  • 0 关注
  • 175 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信