【发布时间】:2021-11-20 02:32:36
【问题描述】:
我正在尝试在 C# EF Core 查询中翻译以下 SQL 命令。
SELECT u.firstname, c.name FROM notification AS n
LEFT JOIN user AS u ON n.objectID=u.userID AND n.notificationType=0
LEFT JOIN conversation c ON n.objectID=c.conversationID AND n.notificationType=1;
所以基本上,我有 3 张桌子。 user 和 conversation 表包含有关用户和对话的信息。 notification 表包含字段 notificationType,告诉它是哪种类型的通知:0 表示 user 通知,1 表示 对话 通知。通知表中的字段 objectID 包含一个 id。此字段中的 id 取决于 notificationType 中的值。如果值为 0,则 id 是用户 id。如果值为 1,则 id 为会话 id。因此,根据 notificationType 的值,我想加入不同的表。我目前能够执行所有命令,除了在每个 JOIN 命令的 ON 子句中添加 AND...
这种设计的想法是减少通知表的列数量。将来,会有更多的通知类型。那么如何在 EF Core 函数调用中翻译 SQL 请求?也许这个设计也很糟糕。我非常愿意接受任何建议。谢谢。
【问题讨论】:
-
您编写匿名类型的对象并在它们之间进行
equals连接。看看dotnettricks.com/learn/linq/…
标签: c# mysql sql entity-framework-core