保存新记录后无法延迟加载实体

时间:2015-10-14 10:41:11

标签: c# entity-framework lazy-loading poco

我在我的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尚未加载。

有人可以帮我解决这个问题吗?

提前致谢。

2 个答案:

答案 0 :(得分:0)

尝试将GetEvent属性重命名为Event,以便EF可以按照通常的conventions推断外键关系(通过eventId)。

答案 1 :(得分:0)

你应该访问Context,并创建一个代理而不是新的Form,这样你就可以在存储库中编写一个访问Context的方法,返回类型是Form类。

有关详细信息,请参阅此Link;