开发者

Trying to traverse tables from sql database using entity framework targeting .net 3.5 websites

开发者 https://www.devze.com 2023-02-04 11:49 出处:网络
I\'m simply trying to get data from two sql server db tables using ado.net entity framework.My code is:

I'm simply trying to get data from two sql server db tables using ado.net entity framework. My code is:

    using (Model.Entities e = new Model.Entities())
    { 
       return e.PAGE.First().CONTROL;
    }

The database is setup to have two tables, a control table which links to a page table via an 'id' field in the tables (control_id). There is one CONTROL object for each PAGE object.

I keep getting a null value for my return value and I know that's not right.

I can use vis studio and breakpoints to see that there is a PAGE object in 'e' and I can see that there are multiple CONTROL objects in 'e'. This isn't a large database, I just have some sample data in there to ensure that I get this working - so I know that there should be a CONTROL object connected to this PAGE (i've verified 开发者_Python百科this through sql server).

I am very familiar with the general code syntax, I've been using LINQ for a couple of years; however, I have not done much work at all with the entity framework or ado.net 4.

It seems like if I just pull individual table data then it works fine (i.e. e.PAGE.First() .. or .. e.CONTROL.Where(x=>x.someValue.Equals('someValue') ) but if I try to pull by traversing through the tables then I get nothing back (NULL).

Hope that all makes sense.


Some questions for you:

  • I assume is a 1..1 between PAGE and CONTROL,
  • Is there a FK called "ControlID" on PAGE?
  • Do you have a navigational property called "Control" on your "Page" entity in your EDMX?

If the answer to all of the above is Yes, then this should work:

var page = e.Pages.Include("Control").First();

Here, you are returning the First "Page" record, and eager loading the associated control.

The SQL produced should be something like this:

SELECT p.*, c.*
FROM Page p
INNER JOIN Control c
on p.ControlId = c.ControlId
0

精彩评论

暂无评论...
验证码 换一张
取 消