微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我在 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 举报,一经查实,本站将立刻删除。