我是實體框架的新手。我使用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實體。
任何幫助將不勝感激!
乾杯,
詹姆斯