I имеет следующую структуру:Entity Framework Load собственность ребенка
public class A{}
public Class B:A
{
public virtual C { get; set;}
}
public Class C{}
public Class Context:DbContext
{
public DbSet<A> As { get; set; }
public DbSet<C> Cs { get; set; }
}
Когда я хочу, чтобы загрузить любой объект b
, свойство C
этого объекта является нулевым. В базе данных столбец C имеет идентификатор в таблице для A
. Другие int
или string
свойства могут быть загружены без проблем.
using(var ctx = new Context())
{
B b = ctx.As.FirstOrDefault() as B;
}
Можно ли решить эту проблему, используя ленивую загрузку? Использование Eagerly Loading У меня есть проблема с включением свойства B
, потому что у меня есть список List<A> someAs
, где некоторые элементы относятся к типу B
.
Я попытался максимально упростить этот пример. Просто скажите мне предоставить дополнительную информацию.
Ах идеальный. Я думаю, что это будет делать именно то, что я хочу. Я собираюсь попробовать это завтра и сказать вам, если это сработает. Один вопрос: почему ленивая загрузка не работает в этом случае? – jasdefer
О, ленивая загрузка тоже должна работать, если вы нажмете 'A' на' B', но предпочтительной является загрузка с IMO. –
Это работает. Большое спасибо. Я не мог заставить его работать с ленивой загрузкой. Я не хочу его использовать, но мне любопытно. Как мне отдать 'A' на' B'. Я попробовал: 'A a = ctx.As.FirstOrDefault();', а затем 'B b = (B) a', но это не сработало. – jasdefer