2016-12-21 6 views
1
public class GebruikerModel 
{ 
    public String Gebruikersnaam { get; set; } 
    public String Wachtwoord { get; set; } 
    public String FaculteitModelNaam { get; set; } 
    public String InstellingModelMNaam { get; set; } 

} 

public class FaculteitModel 
{ 
    public String Naam { get; set; } 
}                      

public class InstellingModel 
{ 
    public String naam { get; set; } 
} 

ユーザ(Gebruiker)は、データベースに格納されている:異なるテーブルからプロパティを参照してidからstringにマップするにはどうすればよいですか?次のように

int id; (PK) 
String name 
int FaculteitId 
int InstellingId 

学部(faculteit)と学校(instelling)次のように

int id; (PK) 
String name; 

編集:作成しますLinqを使用してSQLに変換します。

明らかに、私の意見にはIDは必要ありません。

GebruikerModel singleUser = Mapper.Map<Gebruiker, GebruikerModel>(db.Gebruikers.FirstOrDefault()); 

とエラーを取得:(デスティネーションメンバーリスト)\ rを\ nは\ rを\ nUnmappedプロパティ:\ rを\ nFaculteitModelNaam \ rを\ nInstellingModelMNaam \ rをする\ n "}だから私はautomapperを使用しようとしています私は私のviewmodelにそれらをマッピングするために教員や学校からの名前を取るためにautomapperを設定するにはどうすればよいAutoMapper.AutoMapperConfigurationException

+0

自動マッパーを使用しないでください**。これは簡単なコードで、自動マッパーを簡単に実行できます。 – Liam

+0

同じ問題が発生するため、さまざまなインスタンスがあるためです。だから私は自分自身ですべての変換を書く必要がありますか? – user3117628

+0

同じ問題で* 1トンの異なるインスタンスがある場合は、設計に問題があります。しかしそれは別の問題です個人的には、問題を見て、「私はオートマッパーで解決します」と考えると、今は2つの問題があり、そのうちの1つはオートマッパーです。私はファンではありません(それは遅くて扱いにくく、破損しがちです)ので、お手伝いをするためにこれを残しておきます。 – Liam

答えて

1

あなたのコードは、私には明確ではない。私はここに例を与えているあなたを助けるかもしれません。

1モデル1

public class class1 
    { 
     public string ID1 { get; set; } 
     public string Name1 { get; set; } 

    } 

モデル2

public class class2 
    { 
     public int ID2 { get; set; } 
     public string Name2 { get; set; } 

    } 

ID1とID2は、異なるデータ型を有することに留意されたいです。今度はclass2をclass1にマッピングしたい場合、あなたの設定は次のようになります。

あなたの設定とマッピング:

class2 c2 = new class2 { ID2 = 1, Name2 = "Test" }; 

    Mapper.Initialize(cfg => 
       { 
        cfg.CreateMap<class2, class1>() 
        .ForMember(dest => dest.ID1, opts => opts.MapFrom(src => src.ID2.ToString())) 
        .ForMember(dest => dest.Name1, opts => opts.MapFrom(src => src.Name2)); 

       }); 


    var data = Mapper.Map<class1>(c2); 

またはプロパティ名が両方のモデルで「名前」であるならば、あなたの設定がされます。

Mapper.Initialize(cfg => 
      { 
       cfg.CreateMap<class2, class1>() 
       .ForMember(dest => dest.ID1, opts => opts.MapFrom(src => src.ID2.ToString()));     

      }); 

:この場合は逆のマップは、あなたが適切な変換と送信元と宛先を逆にして、新しい構成を作成する必要があり.Reverse()メソッドを使用して動作しません。

関連する問題