Automapper nie działa podczas projekcji IQueryable <object>, gdy obiekt ma właściwość kolekcji
Oto moja sytuacja. Mam dwie moje klasy:
<code>class FromClass { public string[] Foo { get; set; } } class ToClass { public string[] Foo { get; set; } } </code>
Klasy mają właściwości, które są tablicami. Oni mogą byćList<T>
lubIEnumerable<T>
, Mam taki sam wynik w każdym z tych przypadków.
Próbuję mapować z jednego na drugi za pomocąAutoMapper.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>
Dlaczego test2 rzucaInvalidOperationException
? Jeśli zrobię typFoo
coś, co nie jest kolekcją, np. zastring
lub jakąś inną klasę - wtedy wszystko działa doskonale.
czy robię coś źle? Nie rozumiesz czegoś? Czy może trafiłem na błąd?