我最近开始使用Automapper。我有一个拥有50个属性的大型数据库表格。 我想使用Automapper更新表格,但只有少数选定的属性将使用viewmodel传递。
为了让我的问题更简单,我编写了一个小型控制台程序。
internal class Person
{
public string FirstName { get; set; }
public string NickName { get; set; }
public string LastName { get; set; }
}
internal class PersonContract
{
public string FirstName { get; set; }
public string NickName { get; set; }
public string LastName { get; set; }
}
class Program
{
static void Main(string[] args)
{
PersonContract Person1 = new PersonContract { NickName = "Dan", LastName = "Smith" };
Person Person2 = new Person { FirstName = "Robert", NickName = "Rob" };
Mapper.CreateMap<PersonContract, Person>();
Mapper.Map(Person1, Person2);
Console.WriteLine(Person2.FirstName);
Console.WriteLine(Person2.NickName);
Console.WriteLine(Person2.LastName);
Console.ReadLine();
}
}
我的输出是 NULL 丹 史密斯
我原本期望的是 罗伯特 丹 史密斯
因为如果Person1没有传递“Firstname”,那么Person2应该保留旧值。 显然,我没有正确理解它。 有人能解释一下这个问题吗?并让我知道如何得到我期望的输出。