2012-05-17 4 views
1

Я пытаюсь сделать это:Получение пользователя из базы данных и актерских к объекту пользователя

User user = (User)db.Users.Include("Sports").Where(a => a.UserId == currentUser.UserId); 

Но я получаю ошибку произнесения.

Как я могу получить пользователя из базы данных и применить к объекту пользователя?

РЕШЕНИЕ:

User user = db.Users.Include("Sports").Where(a => a.UserId == currentUser.UserId).FirstOrDefault(); 

или

User user = db.Users.Include("Sports").SingleOrDefault(a => a.UserId == currentUser.UserId);    
+6

Вам нужно добавить '.FirstOrDefault()' в выражение LINQ - прямо сейчас вы получаете ** коллекцию ** объектов назад .... (ни один) –

+2

Чтобы лучше объявить вы должны использовать ['Single'] (http://msdn.microsoft.com/en-us/library/bb535118.aspx) или [' SingleOrDefault'] (http://msdn.microsoft.com/en- us/library/bb549274.aspx) вместо 'Where', если вы ожидаете, что только один объект будет соответствовать вашему предикату. ... Также, что marc_s сказал. 'Where' возвращает IEnumerable. –

+0

Теперь он работает с использованием либо SingleOrDefault, либо FirstOrDefault. Спасибо всем ! –

ответ

3

Вам не нужно явно бросить.

User user = db.Users.Include("Sports"). 
       Where(a => a.UserId == currentUser.UserId).FirstOrDefault(); 

Это должно работать, Asssumung Users это свойство типа DbSet<User>.

2

вы могли бы попробовать

User user = (from U in db.Users.Include("Sports") where U.UserID == currentUser.UserID select U).FirstOrDefault() 
1

Я хотел бы попробовать

 var user = (from U in db.Users.Include("Sports") 
where U.UserID == currentUser.UserID select U).Single(); 

Поскольку должен быть только один соответствующий идентификатор пользователя.

0

var user = db.Users.Find (currentUser.UserId);

db.Entry (пользователь) .Reference («Спорт»). Load();

+1

Вы должны объяснить свой ответ немного. – Fidel90

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