Automapper falla cuando se proyecta IQueryable <object> cuando el objeto tiene una propiedad de colección
Entonces, aquí está mi situación. Tengo un mis dos clases:
<code>class FromClass { public string[] Foo { get; set; } } class ToClass { public string[] Foo { get; set; } } </code>
Las clases tienen propiedades que son matrices. Ellos pueden serList<T>
oIEnumerable<T>
, Obtengo el mismo resultado en cualquiera de esos casos.
Intento mapear de uno a otro usando elAutoMapper.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 qué prueba2 lanza unInvalidOperationException
? Si hago el tipo deFoo
algo que no es una colección, por ej. unastring
o alguna otra clase - entonces todo funciona perfectamente.
¿Estoy haciendo algo mal? ¿No entiendes algo? ¿O he golpeado un error?