【问题标题】:ASP Core 3.1 API with EF Core 5.0带有 EF Core 5.0 的 ASP Core 3.1 API
【发布时间】:2020-07-23 17:52:27
【问题描述】:

我对@9​​87654321@ 很感兴趣。我用 Nuget 更新了我的实体框架,但是在 Include 之后我仍然无法使用 Where。

是不是因为我的 APIP 是用 NET Core 3.1 开发的?

感谢您的帮助

编辑:

这是我的 csproj 文件:

【问题讨论】:

  • 能否包含 EF 的包参考(位于 .csproj 文件中)?您是否尝试过恢复包和重建?
  • 您现在可以看到我的 .csproj 文件。我没有尝试恢复包。

标签: c# asp.net-core entity-framework-core


【解决方案1】:

原因是因为 GrowerPayee 不是一个集合。 下面的代码工作正常,但尝试过滤设置,你会遇到同样的问题

public class Organisation
{
    public Guid Id { get; set; }
    
    public string Name { get; set; }

    public List<Location> Locations { get; set; }

    public Setting Setting { get; set; }
}

public class Setting
{
    public string ApiKey { get; set; }
}

public class Location
{
    public Guid Id { get; set; }

    public Guid OrganisationId { get; set; }
    
    public Organisation Organisation { get; set; }
    
    public string Name { get; set; }
}

public class Db : DbContext
{
    public DbSet<Organisation> Organisations { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        using (var db = new Db())
        {
            var organisations = db.Organisations
                .Include(x => x.Locations.Where(l => l.Name.Contains("ABC")))
                .Where(o => o.Name.Contains("OOO"))
                .ToArray();
        }
    }
}

【讨论】:

  • 谢谢!我想你刚刚发现了我的问题!你知道是否有办法在 GrowerPayee 上进行过滤吗?还是在您的示例中设置?
  • 我不知道,但我已经向团队提交了功能请求github.com/dotnet/efcore/issues/21751
  • 非常感谢,希望他们能增加这个功能。与此同时,我需要找到一种解决方法:/
  • 您也可以在 github 项目上投票以添加该功能:)
  • 我不知道您是否会看到该消息,但我发现我们可以这样做:var queryTest = _context.LedgerEntries.Where(x =&gt; x.GrowerPayee.CropYear == cropYear); queryTest = queryTest.Include(x =&gt; x.GrowerPayee); var LedgerEntries = await query.ToListAsync();
猜你喜欢
  • 2021-04-22
  • 1970-01-01
  • 2021-04-30
  • 2021-08-19
  • 1970-01-01
  • 2022-11-11
  • 2020-10-13
  • 1970-01-01
  • 2019-05-15
相关资源
最近更新 更多