Выборка данных по ID пользователя
Я постарался назвать пост так, чтобы его было проще найти тем у кого возникла аналогичная проблема. Не знаю, получилось или нет…
Имеется таблица Urls, в которой располагаются различные данные данные, и эта таблица связана с таблицей aspnet_Users, по полю id_user. Я использовал инфраструктуру ASP.NET для управления пользователями (поэтому и присутствует таблица aspnet_Users), т.е. все необходимые таблицы были созданы автоматически утилитой C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regsql.exe.
В таблице aspnet_Users имеется поле UserId (с ним собственно и связывали таблицы) типа uniqueidentifier.
Затем была создана объектная модель посредством технологии LINQ. И id_user в ней был типа Guid (то есть глобальный идентификатор пользователя).
Возникла задача, выводить данные из таблицы Urls, но не все а только которые относятся к вошедшему («залогинившемуся») пользователю. Надеюсь идея понятна.
Реализация
Я создал метод который работает с созданной Linq моделью — DCDataContext. По задумке функция и будет возвращать только данные связанные с пользователем.
DCDataContext _dataContext; public IEnumerable<Url> GetUrls(Guid id) { IEnumerable<Url> obj = _dataContext.Urls.OrderBy(t => t.id_user == id); return obj; }
Тут все достаточно просто. И так как было написано t.id_user == id, то логично, что данные должны быть те которые я и ожидал. НО у меня выводились все данные. Я все перепроверил, вроде бы все верно.
Решение
В итоге я решил эту проблему, и код стал такой:
DCDataContext _dataContext; public IEnumerable<Url> GetUrls(Guid id) { IEnumerable<Url> obj = _dataContext.Urls.OrderBy(t => t.id_user); obj = obj.Where(i => i.id_user == id); return obj; }
Почему не работал тот код, я не пойму. Если кто знает, объясните…