Asp.net mvc 4 初始化实体框架工作单元中的引用对象
我在Entity framework 5中有一个类(使用MVC 4): 在OnModelCreating方法中,我与状态表建立FK关系,如下所示: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
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
属性