2011-08-25 54 views
1

我需要在SQL Server中創建一個視圖,並在我的.aspx頁面的GridView中使用它。 該視圖通過實體框架映射到我的應用程序中。查看並不存在要在實體框架中使用的連接

這裏是我的例子:

SELECT User.UserName, User.UserId 
FROM User 
WHERE NOT EXISTS (SELECT UsersInRoles.RoleId FROM UsersInRoles 
WHERE UsersInRoles.UserId = User.UserId AND UsersInRoles.RoleId = 'AdminRole') 

UserUsersInRoles表之間的關係是一個一對多的。

我需要能夠在我的ASP.NET應用程序中傳遞AdminRole值。

我不能在視圖中使用參數(即不允許使用@Role)。

只有視圖和表可以綁定到GridView,所以存儲過程(其中參數 可能是一個選項)在這裏不好。

是否有解決方法使用LEFT OUTER JOIN而不是NOT EXISTS? 這樣,在UsersInRoles表上有JOIN,我可以在我的應用程序中通過Entity Framework映射UsersInRoles中的字段,我可以在那裏添加條件(使用EntityDataSource.Where子句)。

+0

歡迎來到SO。考慮註冊爲用戶。我編輯了你的問題,使其更具可讀性。 – Zabba

回答

0

我在EF中很新,但我知道我們可以在其中使用存儲過程(或函數)。

Try read this

1

對於存在,則使用在該LINQ任何擴展方法。對於不存在,使用!任何。

var query = from user in User 
      where !user.UsersInRoles.Any(role => role.RoleId == 'AdminRole') 
      select new {user.UserName, user.UserId};