2016-08-18 15 views
0

私はAsp.Net Web APIを使用してPOCを作成しています。あるオブジェクトタイプを別のオブジェクトタイプにマッピングするために、私はAutoMapper(v5.1.1)を使用しています。ここでマッピングするために使用されているタイプです。AutoMapperConfigurationException:プロパティ名を表示せずに例外をスローするAutoMapper

//Entity 
public class Goal : IVersionedEntity 
    { 
     public virtual int GoalId { get; set; } 
     public virtual string Title { get; set; } 
     public virtual string Description { get; set; } 
     public virtual DateTime StartDate { get; set; } 
     public virtual DateTime EndDate { get; set; } 
     public virtual string Reward { get; set; } 
     public virtual DateTime? DisabledDate { get; set; } 
     public virtual byte[] Version { get; set; } 
     public virtual User User { get; set; } 
     public virtual ICollection<Schedule> Schedules { get; set; } 
    } 
//Model 
public class Goal 
    { 
     private List<Link> _links; 
     public int GoalId { get; set; } 
     public string Title { get; set; } 
     public string Description { get; set; } 
     public DateTime? StartDate { get; set; } 
     public DateTime? EndDate { get; set; } 
     //public Status Status { get; set; } 
     public string Reward { get; set; } 
     public DateTime? DisabledDate { get; set; } 
     public User User { get; set; } 
     public ICollection<Schedule> Schedules { get; set; } 
     public List<Link> Links 
     { 
      get { return _links ?? (_links = new List<Link>()); } 
      set { _links = value; } 
     } 
     public void AddLink(Link link) 
     { 
      _links.Add(link); 
     } 

    } 

私は次のように目標のモデルタイプのオブジェクトにゴールエンティティをマッピングしています:

public async System.Threading.Tasks.Task Configure() 
     { 
      Mapper.Initialize(cfg => cfg.CreateMap<Data.Entities.Goal, Models.Goal>() 
      .ForMember(m => m.Links, i => i.Ignore())); 
     } 

、ここでは「AutoMapperConfigurator」クラス「はApp_Start」であります:

public void Configure(IEnumerable<IAutoMapperTypeConfigurator> autoMapperTypeConfigurations) 
     { 
      autoMapperTypeConfigurations.ToList().ForEach(m => m.Configure()); 
      Mapper.AssertConfigurationIsValid(); 
     } 

しかし、それは、次の例外がスローされます。

TestApp.Web.Api.Models.Goalの次のプロパティは、 にマップすることはできません。カスタムマッピング式を追加するか、無視するか、カスタム リゾルバを追加するか、宛先タイプTestApp.Web.Api.Models.Goalを変更します。 コンテキスト:タイプTestApp.Data.Entities.Goalから へのマッピングTestApp.Web.Api.Models.Goalタイプ の例外 'AutoMapper.AutoMapperConfigurationException'がスローされました。

マップされていないプロパティは表示されません。 この発行についてのヘルプ。

答えて

0

この上で時間を過ごした後、私の最終的な調査結果は以下の通り

  1. あなたはそれを動作させるために、すべてのエンティティモデルと正しいサービスモデルのマッピングを持っている必要があります。 1つでも失敗しても、前述の例外がスローされます。複雑な型のマッピングが正しくない場合は、上記のエラーが発生します。
  2. 私の場合、Complex Typeをどのように設定するのかが分かりませんでした。AutoMapperです。マッピング
中に特定の要件が来ている場合や CustomMappingを使用:
  • は(http://www.softwarerockstar.com/2011/05/complex-object-mapping-using-automapper/を参照してください)Complex Typeを設定し、いずれかの必要に応じて、またはネストされたマッピングのための.ForMember(m => m.Property, i => i.MapFrom(j => Mapper.Map<Entity,ServiceModel>(j.Property)))ない場合は、複合型のマッピングを無視する.ForMember(m => m.Property, i => i.Ignore())を追加するには
  • 関連する問題