Как остановить предложение «Включить предложение для сложных свойств»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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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