1

我在实体框架 5 中有一个类(使用 MVC 4):

public class JobFunction
{
    public int Id { get; set; }

    public string JobFunctionName { get; set; }

    public int StatusId { get; set; }

    public Status JFStatus { get; set; }
}

在我的 OnModelCreating 方法中,我与 Status 表建立了 FK 关系,如下所示:

modelBuilder.Entity<JobFunction>().HasRequired(a => a.JFStatus).
                WithMany().HasForeignKey(u => u.StatusId).WillCascadeOnDelete(false);

在我的控制器中,我得到一个 JobFunction 对象列表,如下所示:

List<JobFunction> jfList = uow.JobFunctionRepository.GetAll().ToList<Catalog>();

其中 uow 是我的工作单元对象,并且定义了 JobFunctionRepository。当我检查 jfList 中的任何 JobFunction 对象时,我在监视窗口中看到以下内容:

Id: 1 JfStatus: null JobFunctionName: "Manager" StatusId: 2

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

提前致谢。-扎瓦尔

4

1 回答 1

0

当您通过存储库加载数据时,您需要一些工具来应用预先加载。例如,您可以为您的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;
}

然后你这样称呼它:

List<JobFunction> jfList = uow.JobFunctionRepository
    .GetAll(jf => jf.JFStatus)
    .ToList();

JFStatus属性现在应该被填充。

于 2013-10-07T13:52:15.427 回答