2014-08-28 5 views
0

Я использую бритву MVC 5, и я новичок в этом.Получить проекты, где User_id == текущий пользователь

Я хочу показывать только проекты, созданные пользователем. В моем проекте таблицы есть FK для пользователя как User_id.

Я использовал модель ApplicationUser, которая автоматически отображается в начале нового проекта в MVC.

В моем контроллере проекта:

private UserManager<ApplicationUser> manager; 

public ProjectController() 
{ 
    manager = new UserManager<ApplicationUser>(
     new UserStore<ApplicationUser>(db)); 
} 

// GET: /Project/ 
[Authorize] 
public ActionResult Index() 
{ 
    var currentUser = manager.FindById(User.Identity.GetUserId()); 
    var proj = from p in db.Projects 
       where p.User == currentUser 
       select p; 
    return View(db.Projects.ToList(proj)); 
} 

ошибка.

Невозможно создать постоянное значение типа 'herexamen800.Models.ApplicationUser. В этом контексте поддерживаются только примитивные типы или .

+0

Не работает? Любая ошибка? В чем вопрос? –

+0

Я только что разместил ошибку – Keeper01

ответ

2

Просто сравните идентификатор, а не ссылку.

var userId = User.Identity.GetUserId(); 
var proj = from p in db.Projects 
      where p.User.Id == userId 
      select p; 
+1

Спасибо за решение проблемы! – Keeper01

+0

У вас, вероятно, есть столбец UserId в объекте Project, я бы сравнил userId с p.UserID вместо p.User.Id, он должен удалить JOIN в сгенерированном запросе –

+0

@ MarienSoft'It, имя столбца FK - 'User_Id ', который обычно является именем FK по умолчанию для независимой ассоциации, если только имя свойства явно не установлено в' public PropertyType User_Id {get; set;} 'или не меняет имя столбца, используя свободно api –