У меня есть база данных SQLite и эти модели EF и контекст.
Модели и контекст
public class CardHolder
{
public int CardHolderId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string PhoneNumber { get; set; }
public string EmailAddress { get; set; }
public string TenantName { get; set; }
public ICollection<AccessCard> AccessCards { get; set; }
}
public class AccessCard
{
public int AccessCardId { get; protected set; }
public CardHolder CardHolder { get; set; }
public DateTime ActivationDate { get; protected set; }
public bool ActivationProcessed { get; set; }
public DateTime? DeactivationDate { get; protected set; }
public string DeactivationReason { get; set; }
public bool DeactivationProcessed { get; set; }
}
public class MyContext : DbContext
{
public DbSet<CardHolder> CardHolders { get; set; }
public DbSet<AccessCard> AccessCards { get; set; }
}
А Основная программа
class Program
{
static void Main(string[] args)
{
using (var db = new MyContext())
{
var cardHolders = db.CardHolders.Include("AccessCard").ToList();
}
}
}
Вопрос1: Почему я получаю это исключение
System.InvalidOperationException: 'Указанный путь включения не является
действительный. EntityType 'SQLiteDemo.Models.CardHolder' не объявляется
свойство навигации с именем 'AccessCard'. '

Если заменить его на
var cardHolders = db.CardHolders.Include("AccessCards").ToList();
Я получаю еще одну ошибку:
Ошибка логики SQL: такой столбец отсутствует: Extent2.CardHolder_CardHolderId
Что не так с Entity Framework?
Вопрос2: Почему я не могу использовать функцию стрелки в операторе включения, она вообще не компилируется?

var cardHolders = db.CardHolders.Include(x => x.AccessCards).ToList();
Вопрос 3. Почему вообще нужно использовать «Включить», если свойство AccessCards моей ассоциации ICollection НЕ является виртуальным - это означает, что активная загрузка должна работать сама по себе!
Какого черта это так проблематично и глючит? Ничто не работает так, как должно: (