Как остановить предложение «Включить предложение для сложных свойств» ⇐ C#

Место общения программистов C#
Anonymous
Как остановить предложение «Включить предложение для сложных свойств»

Сообщение Anonymous »

У меня есть пример приложения ниже, использующий сложное свойство в EF Core. При запросе базы данных Customer Rider дает мне ложноположительное предложение включить свойство Address.

Однако при попытке включить адрес, как предложено, это приводит к исключению во время выполнения :

Выражение «customer.Address» недопустимо внутри операции «Include», поскольку оно не представляет доступ к свойству: 't => t. Моя собственность». Чтобы настроить навигацию, объявленную в производных типах, используйте приведение ('t => ((Derived)t).MyProperty') или оператор 'as' ('t => (t as Derived).MyProperty'). Доступ к навигации по коллекции можно отфильтровать, составив операции Where, OrderBy(Descending), thenBy(Descending), Skip или Take. Дополнительную информацию о включении связанных данных см. на странице https://go.microsoft.com/fwlink/?LinkID=746393.

Почему это предполагает наличие и как мне от этого избавиться? Это ошибка или проблема внутри Rider?
Я знаю, что могу вставить комментарий отключения над строкой, чтобы отключить предложение, или добавить его в конфигурацию редактора и т. д., но вместо этого я пытаюсь решить проблему.
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 Customers { get; set; }

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("CONNECTION_STRING");
}

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity()
.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; }
}


Подробнее здесь: https://stackoverflow.com/questions/791 ... properties

Вернуться в «C#»