Asp.net mvc 4 初始化实体框架工作单元中的引用对象

Asp.net mvc 4 初始化实体框架工作单元中的引用对象,asp.net-mvc-4,entity-framework-5,unit-of-work,Asp.net Mvc 4,Entity Framework 5,Unit Of Work,我在Entity framework 5中有一个类(使用MVC 4): 在OnModelCreating方法中,我与状态表建立FK关系,如下所示: modelBuilder.Entity<JobFunction>().HasRequired(a => a.JFStatus). WithMany().HasForeignKey(u => u.StatusId).WillCascadeOnDelete(false); List<JobF

我在Entity framework 5中有一个类(使用MVC 4):

在OnModelCreating方法中,我与状态表建立FK关系,如下所示:

modelBuilder.Entity<JobFunction>().HasRequired(a => a.JFStatus).
                WithMany().HasForeignKey(u => u.StatusId).WillCascadeOnDelete(false);
List<JobFunction> jfList = uow.JobFunctionRepository.GetAll().ToList<Catalog>();
modelBuilder.Entity().HasRequired(a=>a.JFStatus)。
WithMany().HasForeignKey(u=>u.StatusId).WillCascadeOnDelete(false);
在我的控制器中,我得到一个JobFunction对象列表,如下所示:

modelBuilder.Entity<JobFunction>().HasRequired(a => a.JFStatus).
                WithMany().HasForeignKey(u => u.StatusId).WillCascadeOnDelete(false);
List<JobFunction> jfList = uow.JobFunctionRepository.GetAll().ToList<Catalog>();
List jfList=uow.JobFunctionRepository.GetAll().ToList();
其中uow是我的工作单元对象,定义了JobFunctionRepository。当我检查jfList中的任何JobFunction对象时,我会在我的观察窗口中看到以下内容:

身份证号码:1 JfStatus:null JobFunctionName:“经理” 身份证号码:2

请注意,JFStatus为null。我的问题是:在GetAll调用期间,我在代码中做了哪些规定来将JFStatus初始化为适当的状态对象(基于StatusId的值)

提前谢谢。
-Zawar

当您通过存储库加载数据时,您需要一些工具来应用即时加载。例如,您可以为
GetAll
方法提供要包含在查询中的导航属性的表达式参数列表:

using System.Data.Entity;
//...

public IQueryable<JobFunction> GetAll(
    params Expression<Func<JobFunction, object>>[] includes)
{
    IQueryable<JobFunction> query = context.JobFunctions;

    foreach (var include in includes)
        query = query.Include(include);

    return query;
}
使用System.Data.Entity;
//...
公共iqueryablegetall(
参数表达式[]包括)
{
IQueryable query=context.JobFunctions;
foreach(包含在包含中的var)
query=query.Include(包含);
返回查询;
}
然后你这样称呼它:

List<JobFunction> jfList = uow.JobFunctionRepository
    .GetAll(jf => jf.JFStatus)
    .ToList();
List jfList=uow.JobFunctionRepository
.GetAll(jf=>jf.JFStatus)
.ToList();
现在应该填写
JFStatus
属性