2017-03-20 7 views
0

2つの同一のテーブルがあります。私は最初のテーブルから別の行にいくつかの行をコピーしたい。これは私がやったことです:C#linq:テーブルから別のテーブルに行をコピー

var getTemplate = (from i in dc.Templates where i.Document == tablename select i); 

      foreach (var val in getTemplate) 
      { 
       DAL.Type qt = new DAL.Type(); 

       qt.col1 = val.col1; 
       qt.col2 = val.col2; 
       .... 
      } 

しかし、多くの列があります。一度に行全体をコピーする方法はありますか?

+4

オートマッペを検索します。これはあなたを助けるかもしれません。 – Christos

+0

automapperの具体例は? – atroul

+0

ここからはhttps://www.codeproject.com/Articles/61629/AutoMapperから開始できます。また、これは良いリンクhttps://dotnetcademy.net/Learn/2/Pages/1です。私は後者から始めるだろう。 – Christos

答えて

0

私はAutomapperがうまくいくと思います。あなたの列が同じ名前であれば、大きな作業負荷を取り除くことができます。

このように変換できます。

BankViewModel bank = Mapper.Map<BankViewModel>(BankDto); 

オートマッパーの初期化。

public class AutoMapping 
    { 
     internal static void Init() 
     { 
      Mapper.CreateMap<BankDto, BankViewModel>() 
      .ForMember(dst => dst.Id, opt => opt.MapFrom(src => src.BankId)) 
      .ForMember(dst => dst.InstitutionBankId, opt => opt.MapFrom(src => src.InstitutionBankId)); 
     } 
    } 

最後に、アプリケーションがGlobal.asaxで始まる場所にInıtializationを登録する必要があります。

 protected void Application_Start() 
    { 
     AutoMapping.Init(); 
    } 

同じ名前のMapper.CreateMap<BankDto, BankViewModel>()が動作する場合は、

関連する問題