/ / Spojenie viacerých tabuliek pomocou Entity framework 4.1, mám použiť lambda alebo LINQ? - sql, asp.net-mvc, linq, entity-framework, lambda

Viac tabuľky pripojiť pomocou Entity framework 4.1, by som mal použiť lambda alebo LINQ? - sql, asp.net-mvc, linq, entity-framework, lambda

Som nováčikom v rámci Entity Framework a snažím sa previesť spojenie viacerých tabuliek na používanie rámca Entity. Pôvodný SQL vyzeral niečo také

JOIN tab_NewsCommunities S1 ON S1.News_ID = tab_News.NewsID
inner join tab_communities com on S1.Community_ID = com.Community_ID and com.RecordStatus_ID = 2
JOIN tab_Communities c ON S1.Community_ID = c.Community_ID
JOIN tab_Favorites uf ON S1.Community_ID = uf2.Community_ID
WHERE uf.[User_ID] = @UserId

Nový model entity vyzerá takto:Niektoré som to zjednodušil. Môže mi niekto pomôcť previesť sql na LINQ alebo lambda? Videl som veľa vzoriek on-line, ale všetky sa pripájajú k jednému stolu. Vďaka

model entity

odpovede:

4 pre odpoveď č. 1

Navrhujem, aby ste si to prečítali príspevok v blogu autor: CRAIG STUNTZ. Ide o to, že pokiaľ máte vo svojom modeli správny vzťah, môžete jednoducho pomocou navigačného odkazu vybrať všetky svoje vlastnosti bez spoliehania sa na operátora JOIN. A úprimne povedané, toto je krása LINQ, prečo sa k sebe pripojíte, ak to váš model dokáže.


1 pre odpoveď č. 2

Pokiaľ ste definovali vzťahové čiernobiele tabuľky v EF návrhárovi, nemusíte znova robiť spojenia. Stačí sa dočkať, až sa načíta pridružená entita.

var result =  context.News.Include("NewsCommunity.Communities")
.Include("NewsCommunity.Favorites")
.Where( n => n.NewsCommunity.Favorites.Any(f => f.UserId == userId));

1 pre odpoveď č. 3

V metóde Zahrnúť môžete použiť lama výraz s najnovšou verziou Entity Framework. Potom môžete pomocou druhého výberu dostať ďalšiu vrstvu hlboko do vzťahu.

var result = context.News.Include(x=>x.NewsCommunity.select(z=>z.Communities)).Where(...)