Entity Framework 6 Отношения «один-ко-многим» без свойства навигации

c# ef-code-first entity-framework-6

Вопрос

У меня есть 2 таблицы: A и B с отношением «один ко многим», эта таблица была реализована в EF 6, как показано ниже:

public class A
{
    [Key]
    public int AID {get;set;}
    public string AName {get;set;}
}

public class B
{
    [Key]
    public int BID {get;set;}
    public string BName {get;set;}
    public int AID {get;set;}

    [ForeignKey("AID")]
    public A InstanceOfClassA {get;set;}
}

ПРОБЛЕМА

Когда я извлекаю B из контекста, InstanceOfClassA всегда имеет значение null.

предположение

Поскольку свойство навигации не относится к B в сущности A , поэтому инфраструктура сущности не требует ленивой загрузки A при получении B

Ожидая

Поскольку мне не нужно обращаться к B из A , поэтому я хочу избавиться от навигационного свойства в A но при этом сохранить способность ленивой загрузки A от B

ЗАМЕТКА

Я видел сообщение от Map Many to Many отношений без свойства навигации, но это не подходит в моем случае.

В любом случае, я могу заставить ленивую загрузку A из B без использования явного включить var b = context.B.Include(x => x.InstanceOfClassA); ? Возможно, пользовательская конвенция

ИЗМЕНИТЬ 1

Я пробовал использовать соглашение, как следует, и до сих пор не повезло:

modelbuilder.Entity<B>()
    .HasRequired<A>(x => x.InstanceOfClassA);

Принятый ответ

Чтобы работать с ленивой загрузкой, вы должны пометить свойство навигации с помощью virtual ключевого слова:

[ForeignKey("AID")]
public virtual A InstanceOfClassA {get;set;}



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему