生成的SQL會進行交叉連接,但是當ID匹配時,它會像內部連接一樣工作,但是通過在C#中實際使用連接關鍵字,可以更好地執行此操作嗎?有沒有一種方法,你不必指定屬性如何加入,因爲他們都heirarchicly相關反正我的IQueryable語法是否正確?
項目是Page類
PageRoles是Page類
aspnet_Roles一個IQueryable屬性處於PageRole類一個IQueryable屬性
var item = _repository.GetByKey(999);
var f = (from fd in item.PageRoles
from k in fd.aspnet_Roles
where Roles.GetRolesForUser().Contains(k.RoleName)
&& k.RoleId == fd.RoleId
select k.RoleName)
.Count();
編輯:
這裏是我的類中的IQueryable屬性的示例。下面的例子來自PageRole類
public IQueryable<aspnet_Role> aspnet_Roles
{
get
{
var repo=NorthCadburyWebsite.Models.aspnet_Role.GetRepo();
return from items in repo.GetAll()
where items.RoleId == _RoleId
select items;
}
}
將==更改爲等於,您必須交換所以fd.RoleId在左邊,k.RoleId在右邊,但是我相信這是正確的。我仍然試圖讓我的腦袋圍繞加入和層次結構的目的... – 2009-06-26 16:18:01
你不能在fd.aspnet_Roles中加入k,因爲某些原因它不能識別fd ...? – Jon 2009-06-26 16:21:45
我認爲我第一次是對的...... K.RoleID先於平等先走。 – 2009-06-26 16:53:20