我在我的MVC 3.0应用程序中使用Entity Framework 4.1。该应用程序是一种n层方法,我的UI,模型,类,服务和存储库都在一个解决方案中放入单独的项目中。我还使用了工作单元方法和依赖注入,因此,我无法访问UI中的DbContext。
我有两个类,如下面
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; }
}
然后在我的Controller中,我添加了一个类似Form的实例
Form _form = new Form();
_form.eventID = 3;
_form.sampleName = "myString";
_formService.AddForm(_form);
_formService.SaveChanges(); //This calls the Unit of Work Commit
这可以工作并将记录插入数据库。但是在SaveChanges()调用下面的行中我尝试延迟加载相关的Event类,如下所示
string _eventName = _form.GetEvent.eventName;
但值_form.GetEvent
始终为NULL。看起来GetEvent
尚未加载。
有人可以帮我解决这个问题吗?
提前致谢。
答案 0 :(得分:0)
尝试将GetEvent
属性重命名为Event
,以便EF可以按照通常的conventions推断外键关系(通过eventId
)。
答案 1 :(得分:0)
你应该访问Context,并创建一个代理而不是新的Form,这样你就可以在存储库中编写一个访问Context的方法,返回类型是Form类。
有关详细信息,请参阅此Link;