我是实体框架的新手。我使用Ninject在MVC中创建了一个多层应用程序。
我在数据库中有三个表。说表A,表B和表C.实体框架实体没有显示相关实体的属性
Table A has a foreign key relating it to Table B
Table B has a foreign key relating it to Table C
Table A => Table B => Table C
我的应用程序有一个“服务”,将从MVC控制器调用。
该服务充当每个实体(即TableAService,TableBService)的存储库,该实体负责从EF DataContext创建,读取,更新或删除实体,并且可能对这些实体执行业务逻辑。
在我的MVC控制器中,我提到了相应的服务。例如:
private TableAService _tableAService;
public TableAController(EFDataContext dataContext)
{
_tableAService = new TableAService(dataContext);
}
public ActionResult Index()
{
return View();
}
TableAService会是这个样子:
private EFDataContext _dataContext;
public TableAService(EFDataContext dataContext)
{
_dataContext = dataContext;
}
public TableA GetById(int tableAId)
{
_dataContext.TableA.SingleOrDefault(ta => ta.TableAId == tableAId);
}
我明白,在这个例子的服务将被紧密地结合到数据源,我的实际执行情况略有不同,但概念是相同的,我有一个dataContext服务,我想从中返回实体。
问题: - 当我在TableAService的GetById方法中时,SingleOrDefault给了我一个TableB导航属性,它允许我访问所有TableB的属性,包括TableC导航属性。
但是,当我将TableA传递回控制器时,我无法访问TableB的任何属性。
中的服务我也试过:
private ObjectSet<TableA> _objSet = _dataContext.CreateObjectSet<TableA>();
和
return _objSet.SingleOrDefault(ta => ta.TableAId == tableAId);
这似乎并没有做出能够对表B从访问表C导航属性有什么区别表A实体。
任何帮助将不胜感激!
干杯,
詹姆斯