Asp.net 如何在使用AutoMapper时检索实体
我在Asp.net中使用MVC 正如您可以从这段代码中看到的Asp.net 如何在使用AutoMapper时检索实体,asp.net,asp.net-mvc,asp.net-mvc-3,automapper,automapper-2,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Automapper,Automapper 2,我在Asp.net中使用MVC 正如您可以从这段代码中看到的 Event eventObj = Mapper.Map<EventEditViewModel, Event>(eventEditViewModel); 我认为您需要先创建地图,如中所示: Mapper.CreateMap<EventEditViewModel, Event>(); 在使用之前。我认为您需要先创建一个地图,如中所示: Mapper.CreateMap<EventEditViewMode
Event eventObj = Mapper.Map<EventEditViewModel, Event>(eventEditViewModel);
我认为您需要先创建地图,如中所示:
Mapper.CreateMap<EventEditViewModel, Event>();
在使用之前。我认为您需要先创建一个地图,如中所示:
Mapper.CreateMap<EventEditViewModel, Event>();
在使用它之前。您应该避免使用AutoMapper从服务层检索实体。理想情况下,它应该用于直接映射给定类型的属性。您应该避免使用AutoMapper从服务层检索实体。理想情况下,它应该用于在给定类型的属性之间直接映射。有时这可能很有用,但是我尝试在我的服务层中仅使用Automapper,即服务的所有输入和输出都是特殊的输入和输出模型:
Mapper.CreateMap<int, Entity>().ConvertUsing( new RepoTypeConverter<Entity>() );
public class NullableRepoTypeConverter<T> : ITypeConverter<int, T>
{
public T Convert( ResolutionContext context )
{
int? src = (int?)context.SourceValue;
if (src != null && src.HasValue) {
return Repository.Load<T>( src.Value );
} else {
return default(T);
}
}
// Get Repository somehow (like injection)
private IRepository repository;
public IRepository Repository
{
get
{
if (repository == null) {
repository = KernelContainer.Kernel.Get<IRepository>();
}
return repository;
}
}
}
有时这可能很有用,但我尝试在我的服务层中仅使用Automapper,即服务的所有输入和输出都是特殊的输入和输出模型:
Mapper.CreateMap<int, Entity>().ConvertUsing( new RepoTypeConverter<Entity>() );
public class NullableRepoTypeConverter<T> : ITypeConverter<int, T>
{
public T Convert( ResolutionContext context )
{
int? src = (int?)context.SourceValue;
if (src != null && src.HasValue) {
return Repository.Load<T>( src.Value );
} else {
return default(T);
}
}
// Get Repository somehow (like injection)
private IRepository repository;
public IRepository Repository
{
get
{
if (repository == null) {
repository = KernelContainer.Kernel.Get<IRepository>();
}
return repository;
}
}
}
谢谢Peter,映射器已配置:-@GibboK很好,没问题-你想接受这个答案吗:-谢谢Peter,映射器已配置:-@GibboK很好,没问题-你想接受这个答案吗:-我大体上同意,但是,为什么不?感觉不太对,但有时需要从DTO到实体,因此需要从数据库加载一些内容。有没有更好的办法。我大体上同意,但为什么不呢?感觉不太对,但有时需要从DTO到实体,因此需要从数据库加载一些内容。有没有更好的办法。