无法强制转换类型为';的对象;System.Data.Entity.DynamicProxies.Assignme

本文关键字:对象 System Entity Assignme DynamicProxies Data 转换 类型 | 更新日期: 2023-09-27 17:51:15

附加信息:无法将"System.Data.Entity.DynamicProxies.Assignment_20539BEAE4B141780E3B2D295A6858EAA8B5E9C0AD25E8A54154D0AB1E7DFA28"类型的对象强制转换为"AssignmentSystem.Models.AssignmentViewModel"类型。

我有以下模型类的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;

也不起作用;

我试图清除VS2013临时文件,因为它写在这里还尝试在另一个目录中从头开始重建整个解决方案。尝试过这个

提前谢谢。

无法强制转换类型为';的对象;System.Data.Entity.DynamicProxies.Assignme

代码试图将Assignment对象(在第一个异常中,它实际上是从Assigment继承的动态代理对象(强制转换为AssignmentViewModel。因为AssignmentViewModel继承自Assignment,所以它试图将不太特定的类型向下转换为更特定的类型;这是不可能的。

考虑使用AutoMapper之类的工具将模型映射到视图模型。

相关文章: