2015-10-14 3 views
0

Я использую Entity Framework 4.1 в своем приложении MVC 3.0. Приложение представляет собой n-уровневый подход с моим пользовательским интерфейсом, моделью, классами, службами и репозиторием, которые помещаются в отдельные проекты в рамках одного решения. Я также использую подход Unit of Work и Injection Dependency Injection, поэтому у меня нет доступа к DbContext в пользовательском интерфейсе.Невозможно создать Lazy Load Entity после сохранения новой записи

У меня есть два класса, как показано ниже

public partial class Form 
{ 
    public int id { get; set; } 
    public int eventID { get; set; } 
    public string sampleName { get; set; } 

    public virtual Event GetEvent{ get; set; } 
} 

public partial class Event 
{ 
    public int id { get; set; } 
    public string eventName { get; set; } 
} 

Затем в мой контроллер, я добавляю экземпляр класса формы, как этот

Form _form = new Form(); 
_form.eventID = 3; 
_form.sampleName = "myString"; 

_formService.AddForm(_form); 
_formService.SaveChanges(); //This calls the Unit of Work Commit 

Это работает и вставляет запись в базу данных. Но затем в строках ниже в SaveChanges() вызов Старается ленивой нагрузкой соответствующего класса событий, как этот

string _eventName = _form.GetEvent.eventName; 

Но значение _form.GetEvent всегда NULL. Похоже, GetEvent не был загружен.

Может ли кто-нибудь помочь мне в этом?

Заранее спасибо.

ответ

0

Попробуйте переименовать GetEvent свойство Event, так что EF может вывести ключ иностранных отношений (через eventId) после обычного conventions.

0

Вы должны получить доступ к Контексту и создать прокси вместо новой формы, чтобы вы могли написать метод в репозитории, к которому вы обращаетесь в Контекст, а возвращаемый тип - это класс формы.

для получения дополнительной информации см. Это Link;