在目标对象中将ProjectTo <t>()与ObservableCollection <t>一起使用时,AutoMapper ArgumentException

时间:2018-07-23 16:07:48

标签: c# entity-framework-6 automapper-6

我正在使用AutoMapper v6.2.2通过model.compile()扩展方法从Entity Framework v6.2模型映射到ViewModel对象。目标ViewModel类的属性之一是ProjectTo<T>(),它是从源上声明为ObservableCollection<T>,的属性映射而来的。

我的代码示例:

源对象

ICollection<T>

目标对象

namespace Model
{
    public partial class Order
    {
        public virtual ICollection<Model.OrderLine> OrderLines { get; set; }
    }
}

然后执行投影,我有以下代码行,它从我的实体框架上下文(由namespace ViewModel { public class Order { public ObservableCollection<ViewModel.OrderLine> OrderLines { get; set; } } } 表示)中查询所有Order。 ctx是我的AutoMapper _mapCfgProvider对象,它为MapperConfigurationOrder两个对象配置Model和ViewModel对象之间的映射:

OrderLine

上面的代码生成一个return ctx.Orders.ProjectTo<Order>(_mapCfgProvider); 并显示消息:“参数类型不匹配”。

我是否缺少映射配置中的某些内容以能够投影到目标System.ArgumentException?如果我删除了ObservableCollection<T>?调用,而是使用Mapper实例来执行该项目,则该项目可以正常运行& ProjectTo<T>()正确投影到ICollection<T>

使用ObservableCollection<T>的原因是允许服务层在ViewModel上使用其他过滤器,由于延迟加载,这些过滤器将允许在数据存储级别应用这些过滤器,因此,如果可能的话,我想使用ProjectTo<T>()

任何帮助将不胜感激。

0 个答案:

没有答案