ValueInjecter ViewModel到EF poco

时间:2014-10-18 17:28:45

标签: c# valueinjecter

我有以下ViewModel:

public class MessageViewModel
{
    public string Text { get; set; }
    public int ContactID { get; set; }
}

public class Message
{
    public string Text { get; set; }

    [ForeignKey("Contact")]
    public int ContactID { get; set; }
    public Contact Contact { get; set; }
}

public class Contact
{
    public int ID { get; set; }
    public string Name { get; set; } 
}

我使用ValueInjecter进行映射:

 MessageViewModel = new MessageViewModel{ ContactID = 42 };
 Message msg = new Message();
 msg.InjectFrom<UnflatLoopValueInjection>(viewModel);

但ValueInjecter设置了msg.ContactID和msg.Contact.ID。我怎么能避免它?

2 个答案:

答案 0 :(得分:0)

尝试

msg.InjectFrom<FlatLoopValueInjection>(viewModel);

您得到的是预期的行为。

flatteningunflattening

答案 1 :(得分:0)

如果您只想映射到model.Text和model.ContactID,请执行以下操作:

msg.InjectFrom(viewModel);

正在填充Contact.ID,因为你正在使用Unflattening,因此从source.ContactID开始,它将转向target.Contact.ID

要避免这种情况(忽略某些属性),请查看https://stackoverflow.com/a/27444756/112100