Automapper schlägt fehl, wenn IQueryable <Objekt> projiziert wird, wenn das Objekt eine Sammlungseigenschaft hat
Also, hier ist meine Situation. Ich habe zwei Klassen:
<code>class FromClass { public string[] Foo { get; set; } } class ToClass { public string[] Foo { get; set; } } </code>
Die Klassen haben Eigenschaften, die Arrays sind. Sie könnten seinList<T>
oderIEnumerable<T>
In all diesen Fällen erhalte ich das gleiche Ergebnis.
Ich versuche, mit dem von einem zum anderen zu mappenAutoMapper.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>
Warum wirft test2 einenInvalidOperationException
? Wenn ich die Art mache vonFoo
etwas, das keine Sammlung ist, z. einstring
oder eine andere Klasse - dann funktioniert alles perfekt.
Mache ich etwas falsch? Etwas nicht verstehen? Oder habe ich einen Bug getroffen?