Я вижу много вопросов об этой ошибке, но кто-то может сказать мне, почему я получаю эту ошибку в своем коде?
У меня есть пользователь и группа в моем приложении, они имеют отношения многие ко многим:
public class Group
{
[Key]
public int GId { get; set; }
public string GName { get; set; }
public virtual ICollection<UserProfile> Members { get; set; }
public Group()
{
Members = new HashSet<UserProfile>();
}
}
public class UserProfile
{
[Key]
public Guid UserId { get; set; }
[Required]
public string UserName { get; set; }
public virtual ICollection<Group> Groups { get; set; }
public UserProfile()
{
Groups = new HashSet<Group>();
}
}
Я хочу получить всю группу, в которую входит пользователь, и передать ее в ViewBag, поэтому:
UserProfile user = core.Profiles.Find(1);
//ok, no error in controller, but view...
ViewBag.JoinGroups = core.Groups.Where(g => g.Members.Contains(user));
Но я получаю ошибку при просмотре:
@if (ViewBag.JoinGroups != null)
{
foreach (var g in ViewBag.JoinGroups)//My issue start here
{
<p>@g.GId</p>
}
}
И он сказал:
Невозможно создать постоянное значение типа 'Project.Model.UserProfile'.
Поддерживаются только примитивные типы (такие как Int32, String и Guid)
в этом контексте.
Я что-то пропустил?