3
我有安全簡單的模型,其中有:實體框架多個多對多查詢
- 用戶
- 角色
- 路徑
,許多這些表之間有很多聯繫,所以用戶角色和角色到路徑。我正在嘗試編寫一個函數,以便根據用戶是否有權訪問該路徑,從用戶名和路徑中返回一個bool值。我如何用實體框架來做到這一點?我目前有:
var rolesForUser = _entities.Users
.Include("Roles")
.Where(u => u.Login.Equals(username))
.Select(u => u.Roles);
if(rolesForUser.Count() == 0) return false;
var authentications = _entities.WebPaths
.Where(p => p.Path == path)
.WhereIn(p => p.Roles, rolesForUser);
return (authentications.Count() > 0);
它使用一個擴展方法WhereIn,但是這隻能在primatives比較所以這不會在瞬間工作。歡迎任何建議。
嗨克雷格,剛剛與此一去,就行了:「謂詞= predicate.Or(P => p.roles.Any(R => r.Id == role.Id));「我無法訪問role.Id作爲角色是System.Data.Objects.DataClasses.EntityCollection對象而不是System.Data.Objects.ObjectQuery。我想這是由於我如何在rolesForUser中進行選擇,儘管我不確定如何讓它返回。 –
bobwah
2010-01-04 15:45:06
「rolesForUser」的* exact *類型(帶參數)是什麼? – 2010-01-04 16:15:00
(局部變量)IQueryable> rolesForUser –
bobwah
2010-01-04 16:32:36