2

I'm trying to Map with Automapper two arrays, the soure is a poco object from EF and the destination my entity object, that's what I have done and allways return an Empty Array:

From Log[] To > Model.Log[]

   var srcLog = db.Set<Log>().Where(e => e.Id > id).Take(quantity).ToArray();
   var result = Mapper.DynamicMap<Log[], Model.Log[]>(srcLog);

EF Log object:

 public partial class Log
    {
        public long Id { get; set; }
        public string Member_Id { get; set; }
        public string Message { get; set; }
        public DateTime CreatedDate { get; set; }       
        public virtual Member Member { get; set; }
    }

Model.Log[] object:

 public class Log
    {
        public long Id { get; set; } 
        public string Message { get; set; }
        public DateTime CreatedDate { get; set; }
        public Member Member { get; set; }
    }
user1520494
  • 1,134
  • 2
  • 11
  • 27

1 Answers1

3

Don't create a Log[] array mapping - instead just define the mapping between the 2 entities:

var srcLog = new[] {new Log {Id = 1}, new Log {Id = 2}};
Mapper.CreateMap<Log, Model.Log>();//do not map from/to an array

var result = Mapper.Map<Model.Log[]>(srcLog);
Assert.AreEqual(2, result.Length);
Assert.AreEqual(1, result[0].Id);
Assert.AreEqual(2, result[1].Id);//all green!

Doesnt appear you can use the generic or non generic DynamicMap however as you know the types at compile time you should use CreateMap anyway. see here for more details

wal
  • 17,409
  • 8
  • 74
  • 109