ValueInjecter неправильно связывает свойства - PullRequest
0 голосов
/ 23 января 2019

У меня проблемы с получением данных SourceModel, сопоставленных с данными DestinationModel. DestinationModel имеет сложный тип объекта. Хотя имя совпадает, но я не вижу, чтобы какие-либо данные связывались правильно. Я новичок в ValueInjector и, как я понимаю, это то, что я пытался.

public class SourceModel
{
    [Column("ctr_shname")]
    public string CtrShname { get; set; }

    [Column("reg_name")]
    public string RegName { get; set; }

    [Column("Male")]
    public Int64 Male { get; set; }

    [Column("Female")]
    public Int64 Female { get; set; }

    [Column("Single")]
    public Int64 Single { get; set; }

    [Column("Married")]
    public Int64 Married { get; set; }

    [Column("Divorced")]
    public Int64 Divorced { get; set; }

    [Column("Separated")]
    public Int64 Separated { get; set; }

    [Column("Widowed")]
    public Int64 Widowed { get; set; }
}

public class DestinationModel
{
    public string CtrShname { get; set; }
    public string RegName { get; set; }
    public Gender Genders { get; set; }
    public MaritalStatus MaritalStatuses { get; set; }
}

public class Gender
{
    public Int64 Male { get; set; }
    public Int64 Female { get; set; }
}

public class MaritalStatus
{
    public Int64 Single { get; set; }
    public Int64 Married { get; set; }
    public Int64 Divorced { get; set; }
    public Int64 Separated { get; set; }
    public Int64 Widowed { get; set; }
}

И это мой код для сопоставления.

// get data from DB (row count 123)
IEnumerable<SourceModel> data = GetDataFromDB();
List<DestinationModel> finalAnswer = new List<DestinationModel>();

// Try 1: all properties are null for all 123 records
finalAnswer.InjectFrom(data);

// Try 2: Zero count. Nothing gets binds
var mapper1 = new MapperInstance();
finalAnswer = mapper1.Map<List<DestinationModel>>(data);

Пожалуйста, помогите, как мне правильно отобразить карту?

1 Ответ

0 голосов
/ 24 января 2019

Я думаю, что ValueInjector позволяет вводить только один объект, однако вы можете сделать это.

   IEnumerable<SourceModel> data = GetDataFromDB();
IList<DestinationModel> finalAnswer = categoryList
    .Select(x => new DestinationModel().InjectFrom(x)).Cast<DestinationModel>()
    .ToList();

Или сделать foreach и внедрить каждый объект:

foreach (var a in data)
{
    finalAnswer.InjectFrom(a);
}
...