使用AutoMapper和AutoFac IOC将DTO中的外键ID映射到Object

时间:2015-12-17 18:07:43

标签: asp.net-web-api automapper autofac

我的Web API项目,我试图将DTO调用中的id映射到Object。但我在使用AutoFac设置依赖性方面遇到了问题。

以下是我正在使用的课程。

public abstract class DomainObject<IdT> : IDomainObject<IdT> 
{
    public virtual IdT Id { get; set; }
}


public class Course : DomainObject<long>
{
    public string CourseName { get; set; }
    public Teacher Teacher { get; set; }
}

public class  Teacher : DomainObject<long>
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

我想将CourseDTO映射到课程,TeacherID必须映射到教师对象

public class  CourseDTO
{
    public  long  Id{ get; set; }
    public string CourseName { get; set; }
    public long TeacherID { get; set; }
}

以下是实体转换器。

 public class EntityConverter<T,IdT> : ITypeConverter<IdT, T>
 {
    private readonly IGenericRepository<T, IdT> _repository;
    public EntityConverter(IGenericRepository<T, IdT> repository)
    {
        _repository = repository;
    }
    public T Convert(ResolutionContext context)
    {
        return _repository.GetById((IdT)context.SourceValue);
    }
 }

如何使用AutoFac定义映射并注入依赖项。

1 个答案:

答案 0 :(得分:0)

从您的问题中不清楚您遇到了什么问题。如果您只是想在DTO中映射TeacherId,那么根本没有工作要做:

 Intent i=new Intent(getContext(),Main2Activity.class);
                getContext().startActivity(i);

TeacherId将自动映射到Teacher.Id。

如果您想通过从存储库中查找来映射TeacherDTO,那么您可以在链接的问题中使用该方法。注册将与Windsor方法非常相似,并且设置容器以进行分辨率也几乎相同:

Mapper.CreateMap<Course, CourseDTO>();

如果您尝试做的事情比这更复杂,那么您需要发布您尝试映射的实际DTO。