问题描述
我在 sql Server 2016 中使用 EF Core 2.2。
我有一个类,它包含两个派生自同一个基本抽象类的属性,并存储在同一个表中:
public class Entity
{
public int Id { get; set; }
public LeftDetails Left { get; set; }
public RightDetails Right { get; set; }
}
public class LeftDetails : Details
{
...
}
public class RightDetails : Details
{
...
}
public abstract class Details
{
public int Id { get; set; }
public int Number { get; set; }
}
现在,我想做的查询很简单:
SELECT * FROM Entity AS e
INNER JOIN Details As d ON e.Id = d.EntityId
WHERE d.Number = 100
但是使用LINQ,我需要做
var results = DbContext.Set<Entity>()
.Where(e => e.Left.Number == 100 || e.Right.Number == 100);
然后将其转换为不必要地使用鉴别器列并且速度要慢得多的查询。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)