【发布时间】:2011-06-22 19:44:00
【问题描述】:
我试图弄清楚当我的实体具有实体类型的字段时如何使用 Automapper。
我有 3 个这样的课程:
public abstract class Entity<IdK>
{
public virtual IdK Code { get; protected set; }
}
public class Contact : Entity
{
public virtual string Name { get; set; }
public virtual Company Company { get; set; }
}
public class Company : Entity
{
public virtual string Name { get; set; }
}
我的类 Contact 包含一个 Company 类型的元素。
我还创建了一个 ViewModel 来将一些信息传输到我的视图:
public ContactViewModel()
{
public Guid Code { get; set; }
public int Version { get; set; }
[DisplayName("Contact")]
public string Name { get; set; }
[DisplayName("Company")]
public string Company { get; set; }
}
在我的视图模型中,我定义了一个字符串类型的字段 Company。这将包含用户将从下拉列表(公司列表)中选择的值。
我在我的应用启动时定义了一个引导程序:
public class AutoMapperConfiguration
{
public static void Configure()
{
Mapper.Initialize(x => {
x.CreateMap<Domain.Contact, ViewModels.ContactViewModel>();
x.CreateMap<ViewModels.ContactViewModel, Domain.Contact>()
});
}
}
当我尝试将 ViewModel 重新映射到我的实体时,出现转换错误 (AutoMapper.AutoMapperMappingException)。 Automapper 无法弄清楚如何将我的公司(字符串)转换为公司类型的对象,即联系人的成员。 是否可以定义一个规则,以便 Automapper 知道如何将字符串(公司)转换为我的公司对象的代码,即联系人的成员?
【问题讨论】:
标签: viewmodel automapper