2014-03-20 3 views
0

Дополнительная информация: Не удается привести объект типа «System.Data.Entity.DynamicProxies.Assignment_20539BEAE4B141780E3B2D295A6858EAA8B5E9C0AD25E8A54154D0AB1E7DFA28» к типу «AssignmentSystem. Models.AssignmentViewModel.Невозможно привести объект типа 'System.Data.Entity.DynamicProxies.Assignment ...

У меня есть MVC приложение со следующими классами модели

/// class for generating EF CodeFirst Db 

public class Assignment 
{ 
    public Int64 AssignmentId { get; set; } 


    public Int64? ApplicationUserId { get; set; } 


    public string Text { get; set; } 


    public DateTime CreationDate { get; set; } 


    public virtual List<User> Coordinators { get; set; } 


    public virtual List<User> Executors { get; set; } 


    public virtual List<User> DelayResponsible { get; set; } 

    .... 
    .... 
} 

/// this class for interaction with view 
public class AssignmentViewModel : Assignment 
{ 
    public IEnumerable<SelectListItem> AvaliableUsers { get; set; } 
    public IEnumerable<SelectListItem> AvaliableExecutors { get; set; } 
    public IEnumerable<SelectListItem> AvaliableCoordinators { get; set; } 
    public IEnumerable<string> SelectedUsers { get; set; } 
    public IEnumerable<string> SelectedExecutors { get; set; } 
    public IEnumerable<string> SelectedCoordinators { get; set; } 


    public AssignmentViewModel() : base() 
    { 
     AvaliableUsers = new List<SelectListItem>(); 
     AvaliableExecutors = new List<SelectListItem>(); 
     AvaliableCoordinators = new List<SelectListItem>(); 

     SelectedUsers = new List<string>(); 
     SelectedExecutors = new List<string>(); 
     SelectedCoordinators = new List<string>(); 
    } 
} 

Мое приложение работает отлично, но после определенного момента (просто перекомпилировать) POOOF! Это не работает.

я получаю ошибку, упомянутых выше в коде:

// GET: /Assignment/Edit/5 
    public ActionResult Edit(long? id) 
    { 
     if (id == null) 
     { 
      return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
     } 
     AssignmentViewModel assignment = (AssignmentViewModel)db.Assignments.Include(a => a.Attachments) 
      .Include(a => a.Coordinators) 
      .Include(a => a.DelayResponsible) 
      .Include(a => a.Executors) 
      .Include(a => a.MemberComments) 
      .Include(a => a.Initiator).First<Assignment>(f => f.AssignmentId == id); //here 
     .... 
     .... 
    } 

И это:

AssignmentViewModel assignV = new AssignmentViewModel(); 
Assignment assignment = new Assignment(); 
assignV = (AssignmentViewModel) assignment; 

Не работает также;

Я попытался очистить временные файлы VS 2013 as it written here Также попытался восстановить с нуля в другом каталоге все решение. Пробные this

Заранее спасибо.

ответ

2

Код пытается создать объект Assignment (в первом случае это фактически динамический прокси-объект, который наследует от Assigment) до AssignmentViewModel. Поскольку AssignmentViewModel наследует от Assignment, он пытается скрыть менее конкретный тип для более конкретного типа; и это невозможно.

Посмотрите, используя что-то вроде AutoMapper, чтобы сопоставить модель с моделью.

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