2013-02-14 1 views
3

У меня есть три таблицы Users, UserRoles, Roles.Нужна работа для случая Нечувствительный запрос Linq to Entity Framework

  • колонны Usres таблицы являются UserId (Рк VARCHAR (20)), CashCenterId (Int)
  • колонны UserRoles являются UserRoleID (рк Int), UserId (Рк в таблице пользователей), Идентификатор роли (Рк в роль Table)
  • столбцы роли (Pk Идентификатор роли INT), RoleName (VARCHAR (30))

Я использую LINQ для Entity Framework для запроса их.

Теперь я хочу, чтобы функция проверяла, имеет ли пользователь loggin роль «FFFAdmin», поэтому я передаю UserId пользователя loggin для этой функции и выполняю следующие функции.

 public bool isUserFFFAdmin(string UserId){ 

     return (from u in Db.Users 
        join ur in Db.UserRoles on u.UserID equals ur.UserID 
        join r in Db.Roles on ur.RoleID equals r.RoleID 
        where r.RoleName == "FFFAdmin" 
        && u.UserID.Equals(UserId) 
        select '1').Any(); 
     } 

Теперь проблема заключается этот запрос чувствителен к регистру, так что если у меня есть два пользователя говорят

1.'Ram»с ролью„“siteUser 2.„барана“с ролью„FFFAdmin“

теперь, когда я передаю «Рам», эта функция должна возвращать значение false, но возвращает true из-за нечувствительности к регистру этого запроса.

Примечание * Я не могу изменить тип сортировки моей базы данных, чтобы сделать запрос с учетом чувствительности. Пожалуйста, помогите, я новичок в организации и LInq.

ответ

1

Split задача на две части

var users = from u in Db.Users 
      join ur in Db.UserRoles on u.UserID equals ur.UserID 
      join r in Db.Roles on ur.RoleID equals r.RoleID 
      where r.RoleName == "FFFAdmin" 
       && u.UserID == UserId 
      select u.UserID; 

return users.AsEnumerable().Any(s => s == UserId); 

По AsEnumerable() вторая часть выполнена в среде чувствительны к регистру C#, в то время как основная задача фильтрации по-прежнему работу базы данных.

+0

Спасибо большое @Gert Arnold Это сработало (я думаю, что лучшим решением будет изменение типа сортировки моей колонки) –

Смежные вопросы