2013-08-22 2 views
4

У меня проблема с Lazy Загрузка в Entity Framework. У меня есть несколько членов, которые проверяют в регулярно, так что следующий (упрощенная) модель:Entity Framework не ленится загрузить Complex Type

public class Member 
{ 
    public int memberId { get; set; } 
    public string name{ get; set; } 
} 

class CheckIn 
{ 
    public int checkInId { get; set; } 
    public virtual Member member { get; set; } 
    public DateTime timestamp { get; set; } 
} 

и в контексте:

public DbSet<Member> leden { get; set; } 
public DbSet<CheckIn> checkins { get; set; } 

Так я проверил, что в базе данных свойство элемента заполняется (он содержит memberId).

Однако, когда я пытаюсь получить все возвраты:

IQueryable<CheckIn> Checkins = db.checkins; 

собирает все возвраты, но и везде, свойство элемента равна нулю. Я попытался установить

db.Configuration.LazyLoadingEnabled= true; 

, но это не помогло. Кто-нибудь с идеей, почему это не работает?

+1

Как настроить карты? –

+0

Как вы это понимаете? какое отображение я должен применять здесь, так как это членство 1 ... 1? – Marcovannoord

+0

Если вы используете код сначала, вам нужно сопоставить между вашим сущностью и таблицей базы данных аннотацией данных и свободным API, я полагаю, вы используете свободный API? –

ответ

-1

Для ленивой загрузки вам нужно использовать ключевое слово virtual. В модели:

class CheckIn { 
    public virtual Member member { get; set; } 
} 
+0

Объяснение 'почему' было бы неплохо, поэтому он (и другие читатели) понимают, почему это необходимо. – user2674389

+0

А, я не был ясен в своем вопросе, я уже сделал это, но это, похоже, не помогло, к сожалению ... – Marcovannoord

0

Ленивая Загрузка сложных типов не представляется возможным:
Обратите внимание, что EF всегда инициализирует значения свойств в complex type сразу же, когда экземпляр объекта, который держит complex object загружен. EF не поддерживает ленивую загрузку для сложных типов (такое же ограничение существует, если вы хотите иметь ленивую загрузку для скалярных свойств объекта). Это неудобно, когда нам приходится иметь дело с потенциально большими значениями (например, свойство типа byte[] в сложном типе Address, которое было сопоставлено столбцу VARBINARY в таблице Users и хранит изображение местоположения, описанного в адресе.) ,

Information Source

+0

Pls взгляните на это http://weblogs.asp.net/manavi/associations -in-ef-4-1-code-first-part-4-table-splitting Виды разбиения на таблицы и ленивые нагрузки – Eldho

Смежные вопросы