2015-12-17 73 views
0

在我的Web API項目中,我試圖將DTO中的id映射到對象。但是我在使用AutoFac設置依賴性時遇到了問題。使用AutoMapper和AutoFac將DTO中的外鍵ID映射到對象IOC

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

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注入依賴項。

+0

您想要注入哪種類型?和哪裏? –

+0

@Cyril杜蘭德 - 請參考後http://stackoverflow.com/questions/3525120/can-automapper-map-a-foreign-key-to-an-object-using-a-repository。我試圖實現這使用autofac安裝溫莎城堡 – user1770583

回答

0

從你的問題中不清楚你有什麼問題。如果你只是想給TeacherId映射在你的DTO,那麼有沒有工作,在所有的事:

Mapper.CreateMap<Course, CourseDTO>(); 

TeacherId會自動從Teacher.Id映射。

如果您想通過從存儲庫中查找TeacherDTO來映射TeacherDTO,那麼您可以在鏈接問題中使用該方法。報名會很相似溫莎方法,以及分辨率設置的容器幾乎是相同太:

ContainerBuilder builder = new ContainerBuilder(); 
var container = builder.Build(); 
Mapper.Initialize(cfg => cfg.ConstructServicesUsing(container.Resolve)); 

如果你試圖做更復雜的事情莫過於此,那麼你就需要發佈你想要映射到的實際DTO。

相關問題