我正在使用MVC3与实体框架4和存储库模式,并寻找有关选择相关实体的最佳方法的建议。
我一直在阅读以下教程
由于这不是使用存储库模式,因此我很难理解如何设置它,例如,此代码包含在控制器中(在上面的示例中),
public ViewResult Index()
{
var instructors = db.Instructors.Include(i => i.OfficeAssignment);
return View(instructors.ToList());
}
我使用存储库,带有接口ICustomerRepository,以及接口的具体实现。我应该在哪里用include语句构造LINQ查询,如果我尝试在我的存储库的实现中执行此操作(我假设它应该保持控制器清洁的地方)我得到错误,说明无法转换lambda表达式输入字符串。
这是我的存储库实现中的代码,
namespace CustomerOrders.Domain.Concrete
{
public class EFCustomerSiteRepository : ICustomerSiteRepository
{
private EFDbContext context = new EFDbContext();
public IQueryable<CustomerSite> CustomerSites
{
get { return context.CustomerSites; }
}
}
}
这是我的实体,其中包含客户的导航属性。
namespace CustomerOrders.Domain.Entities
{
public class CustomerSite
{
public int CustomerSiteId { get; set; }
public int CustomerId { get; set; }
public string AddressLine1 { get; set; }
public string AddressLine2 { get; set; }
public virtual Customer Custs { get; set; }
}
}
这是我的实体框架上下文
public class EFDbContext : DbContext
{
public DbSet<Customer> Customers { get; set; }
public DbSet<CustomerSite> CustomerSites { get; set; }
}
选择与客户站点相关的实体(客户)的最佳方法是什么?