避免在实体框架中被鉴别器过滤的方法

问题描述

我在 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);

然后将其转换为不必要地使用鉴别器列并且速度要慢得多的查询

是否可以避免这种情况并创建这样的查询而不诉诸普通 sql

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)