如何停止包括对复杂属性的建议

问题描述 投票:0回答:1

我有以下示例应用程序,使用 EF Core 中的复杂属性。查询

Customer
DbSet 时,Rider 给出了包含 Address 属性的误报建议。

Query can return incomplete data for related entities

但是,当尝试按照建议包含

Address
时,会出现运行时异常:

表达式“customer.Address”在“Include”操作中无效,因为它不代表属性访问:“t => t.MyProperty”。要定位在派生类型上声明的导航,请使用强制转换 ('t => ((Derived)t).MyProperty') 或 'as' 运算符 ('t => (t as Derived).MyProperty')。可以通过组合Where、OrderBy(降序)、ThenBy(降序)、Skip 或 Take 操作来过滤集合导航访问。有关包含相关数据的更多信息,请参阅 https://go.microsoft.com/fwlink/?LinkID=746393

为什么会出现这个提示,我该如何摆脱它?这是 Rider 内部的错误或问题吗?

我知道我可以在该行上方插入

disable
注释来禁用该建议或将其添加到
editorconfig
等,但我正在尝试解决该问题。

using Microsoft.EntityFrameworkCore;

await using var context = new AppDbContext();
context.Database.EnsureCreated();

var customers = await context.Customers
    .ToListAsync();

var customerQueryInMemory = customers
    .Where(c => c.Address.Street == "123 Main St")
    .ToList();

Console.WriteLine(customerQueryInMemory.Count);

internal class AppDbContext : DbContext
{
    public DbSet<Customer> Customers { get; set; }
    
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer("CONNECTION_STRING");
    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Customer>()
            .ComplexProperty(c => c.Address);
    }
}

public class Address
{
    public string Street { get; set; }
    public string City { get; set; }
    public string ZipCode { get; set; }
}

public class Customer
{
    public int Id { get; set; }
    public string Name { get; set; }
    public Address Address { get; set; }
}
c# .net entity-framework-core rider
1个回答
0
投票

这看起来像一个错误。我提交了这个问题:RSRP-499275 False“查询可以返回相关实体的不完整数据”

© www.soinside.com 2019 - 2024. All rights reserved.