我是一名从书中学习ASP.NET MVC的新手。我正在使用NInject来实现IoC。我为Job和Location创建了一个数据模型,如下所示
表名 - JobDetails
JobId<PK>
LocationId<FK>
JobName
CategoryId<FK>
表名称 - 位置
LocationId<PK>
LocationName
表名类别
CategoryID<PK>
CategoryName
我创建了位置和JobDetails的实体,如下所示
JobDetails
public class JobDetails
{
[Key]
public int JOBID { get; set; }
public int LocationID { get; set; }
public string JOBNAME { get; set; }
public int CategoryID {get;set;}
public virtual Location JobLocation{get;set;}
public virtual Category JobCategory{get;set;}
}
位置
public class Location
{
[Key]
public int LocationID{ get; set; }
public string LocationName { get; set; }
}
分类
public class Category
{
public string categoryName {get;set;}
public int CategoryId {get;set;}
}
我还有我的工作细节和位置的抽象和上下文类,如下所示
public interface IJobDetails
{
IEnumerable<JobDetails> jobDetailsInterface { get; }
}
public interface ILocation
{
IEnumerable<Location> locationInterface { get; }
}
public class EFLocationRepository : ILocation
{
public EFDbContext context = new EFDbContext();
public IEnumerable<Location> locationInterface
{
get { return context.Location; }
}
}
public class EFJobRepository : IJobDetails
{
public EFDbContext context = new EFDbContext();
public IEnumerable<JobDetails> jobDetailsInterface
{
get { return context.JobDetails; }
}
}
我的作业和位置模型类如下
public class JobListViewModel
{
public IEnumerable<JobDetails> jobDetails { get; set; }
}
public class LocationListViewModel
{
public IEnumerable<Location> Location { get; set; }
}
在我的JobDetail控制器中,我想显示位置名称而不是位置ID和类别名称而不是类别ID。我的JobDetail控制器如下所示
public class JobController : Controller
{
public IJobDetails repository;
public JobController(IJobDetails job)
{
repository = job;
}
public ViewResult List()
{
return View(repository.jobDetailsInterface);
}
}
如果我在JobDetails视图中同时使用CategoryName,LocationName,则会导致N + 1问题。
我如何使用Include&lt;&gt;方法同时具有克服N + 1问题的模型。