I’m new to Entity Framework. I’ve created a Multi Tier Application, in MVC, using Ninject.
I have three tables in the database. Say Table A, Table B and Table 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
My Application has a “service” which will be called from an MVC Controller.
The service acts as a repository for every entity (ie TableAService, TableBService), which is responsible for Creating, Reading, Updating or Deleting Entities from the EF DataContext, aswell as possibly performing business logic on those entities.
Within my MVC controller I have a reference to the appropriate service. For example:
private TableAService _tableAService;
public TableAController(EFDataContext dataContext)
{
_tableAService = new TableAService(dataContext);
}
public ActionResult Index()
{
return View();
}
TableAService would look something like this:
private EFDataContext _dataContext;
public TableAService(EFDataContext dataContext)
{
_dataContext = dataContext;
}
public TableA GetById(int tableAId)
{
_dataContext.TableA.SingleOrDefault(ta => ta.TableAId == tableAId);
}
I appreciate that the example’s service would be tightly coupled to the dataSource, my actual implementation differs slightly but the concept is the same, I have a service with a dataContext that I’d like to return entities from.
QUESTION : – When I’m in the GetById method in the TableAService, SingleOrDefault gives me a TableB navigation property, which allows me to access all TableB’s properties, including a TableC navigation property.
However, when I pass TableA back to the Controller, I can’t access any of TableB’s properties.
Within the Service I’ve also tried:
private ObjectSet<TableA> _objSet = _dataContext.CreateObjectSet<TableA>();
and
return _objSet.SingleOrDefault(ta => ta.TableAId == tableAId);
This doesn’t seem to make any difference to being able to Access the TableC navigation property on TableB from the TableA entity.
Any help would be greatly appreciated!
Cheers,
James
It’s took some digging, but the problem I was experiencing was that my application wasn’t referencing System.Data.Entity.
Adding the reference to the application allowed me to access the properties of the related objects from within the controller.
Thanks for your answers guys, they did help me rule out possibilities. I up voted each.