У меня есть приложение MVC 3, использующее EF. При входе в систему я аутентифицирую пользователя с помощью ajax и хочу вернуть список вещей, которые мне нужно выбрать. У меня есть ViewModelLogin, который имеет IEnumerable. Я использую AutoMapper, чтобы заполнить ViewModel от объекта EF, а затем вернуть ViewModel как JSON.
[HttpPost]
public ActionResult Login(ViewModelLogin login)
{
Mapper.CreateMap<ViewModelLogin, User>()
.ForMember(dest => dest.Email, opt => opt.MapFrom(src => src.Email))
.ForMember(dest => dest.Password, opt => opt.MapFrom(src => src.Password));
var user = _userService.GetUser(Mapper.Map<ViewModelLogin, User>(login));
if (user != null && CreatePasswordHash(login.Password, user.Salt) == user.Password)
{
var ticket = new FormsAuthenticationTicket(1, login.Email, DateTime.Now, DateTime.Now.AddMinutes(20), false, "");
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(ticket));
Response.Cookies.Add(cookie);
Mapper.CreateMap<User, ViewModelLogin>()
.ForMember(dest => dest.Things, opt => opt.MapFrom(src => src.Things))
.ForMember(dest => dest.Password, opt => opt.Ignore());
var returnLogin = Mapper.Map<User, ViewModelLogin>(user);
returnLogin.Success = true;
return Json(returnLogin);
}
return Json(new ViewModelLogin { Success = false, Message = "Test Message"});
}
Когда я делаю это, я получаю сообщение об ошибке, когда сериализатор пытается преобразовать сущность в JSON. Проблема заключается в циклической зависимости, потому что коллекция сохраняет информацию об отношениях из EF (в моем случае это отношение многие ко многим), кроме того, чтобы делать это вручную, кто-нибудь еще решил эту проблему?
Спасибо