因此,我正在使用實體框架將具有普通SQL查詢的舊項目轉換爲ORM。所以我創建的數據庫模型是這樣的:如何與實體框架中的對象連接
所以只好我想翻譯到LINQ表達
SELECT UGLINK.USERNAME
FROM GMLINK
INNER JOIN UGLINK
ON GMLINK.GROUPID = UGLINK.GROUPID
WHERE (((GMLINK.MODULEID)=%ID%))
和我有問題,這個舊的查詢是,我可以」弄清楚如何使用對象進行連接查詢。 相反,我得走了,雖然這樣的性能(這似乎是工作):
// So this is one of the module objects that is located in a listView in the GUI
Module m = ModuleList.selectedItem as Module;
/* Now I want to fetch all the User objects that,
* via a group, is connected to a certain module */
var query = context.gmLink
.Join(context.ugLink,
gmlink => gmlink.GroupId,
uglink => uglink.GroupId,
(gmlink, uglink) => new { gmLink = gmlink, ugLink = uglink })
.Where(gmlink => gmlink.gmLink.ModuleId == m.ModuleId)
.Select(x => x.ugLink.User);
所以,正如我說的這個工程,但你看我種得通過鏈接表的屬性將模塊連接.GroupId
和.ModuleId
等等。相反,我想通過由EF創建的對象。
我想寫一個這樣的問題,但無法弄清楚如何去做,是否可能?
var query = context.User
.Select(u => u.ugLink
.Select(uglink => uglink.Group.gmLink
.Where(gmLink => gmLink.Module == m)));
好吧,這個例外情況是m必須用m.ModuleId代替,所以從某種意義上來說,這更好,我的嘗試,但它仍然加入'.ModuleId'和'.GroupId'即。原型而不是對象(但也許這是唯一的出路? – Markus