У меня есть пример приложения ниже, использующий сложное свойство в 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#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение