Я пытаюсь выяснить, почему это не работает ...
DomainModel
public class ModelEntities : DbContext
{
public DbSet<Address> Addresses { get; set; }
}
Контроллер
public ViewResult List(int id)
{
var db = new ModelEntities();
var addresses = db.Addresses.Where(x => x.CustomerID == id).AsEnumerable();
return View(entities.Cast<AddressVM>());
}
View
@model IEnumerable<WebUI.Models.AddressVM>
...
AddressVM
public class AddressVM
{
public AddressVM(Address address) { Bind(address); }
private void Bind(Address address)
{
// Mapping logic is defined here
}
public static explicit operator AddressVM(Address address)
{
return new AddressVM(address);
}
}
Теперь, если я поменяю представление на IEnumerable<DomainModel.Models.Address>
и не выполняю приведение, все будет работать, как и ожидалось.
Когда я пытаюсь выполнить приведение, я получаю следующую ошибку:
Невозможно привести объект типа 'System.Data.Entity.DynamicProxies.Address_37444C79F0AB1E0A599C8797F37448F12213C5BCAC0611B4C1C8EFADDEFAA82C', чтобы ввести 'WebUI.Models.AddressVM'.
Почему в контроллере addresses
это набор динамических прокси даже после вызова AsEnumerable()
? Что мне нужно сделать, чтобы получить коллекцию объектов моей доменной модели, чтобы я мог привести их к модели представления?