O Automapper falha ao projetar IQueryable <objeto> quando o objeto possui uma propriedade de coleta
Então, aqui está minha situação. Eu tenho minhas duas classes:
<code>class FromClass { public string[] Foo { get; set; } } class ToClass { public string[] Foo { get; set; } } </code>
As classes têm propriedades que são matrizes. Eles poderiam serList<T>
ouIEnumerable<T>
, Eu recebo o mesmo resultado em qualquer um desses casos.
Eu tento mapear de um para o outro usando oAutoMapper.QueryableExtensions
:
<code>class Program { static void Main(string[] args) { // create a "From" object string[] anArray = new string[] { "a", "b" }; FromClass anObject = new FromClass() { Foo = anArray }; // make a queryable set that includes the "From" object IQueryable<FromClass> queryableObjects = (new FromClass[] { anObject }).AsQueryable(); // set up AutoMapper Mapper.CreateMap<FromClass, ToClass>(); Mapper.AssertConfigurationIsValid(); // test plain mapping IQueryable<ToClass> test1 = queryableObjects.Select(o => Mapper.Map<FromClass, ToClass>(o)); // success! // test queryable extensions IQueryable<ToClass> test2 = queryableObjects.Project().To<ToClass>(); // InvalidOperationException: "Sequence contains no elements" } } </code>
Por que o test2 lança umInvalidOperationException
? Se eu fizer o tipo deFoo
algo que não é uma coleção, por exemplo umastring
ou alguma outra classe - então tudo funciona perfeitamente.
Estou fazendo algo errado? Não entendendo alguma coisa? Ou eu acertei um bug?