2016-08-08 3 views
1
public class Template : Entity 
{ 
    public Template() 
    { 
     TemplateItems = new List<TemplateItem>(); 
    } 

    public int id { get; set; } 
    public string name { get; set; } 
    public virtual ICollection<TemplateItem> TemplateItems { get; set; } 
} 


public class TemplateItem : Entity 
{ 
    public int id { get; set; } 
    public int templateId { get; set; } 
    public string name { get; set; } 
    public virtual Template Template { get; set; } 
} 


public sealed class TemplateMap : CsvClassMap<Template> 
{ 
    public TemplateMap() 
    { 
     Map(m => m.name).Name("name"); 
     //Map(m => m.TemplateItems).ConvertUsing(row => new List<string> { row("nodeType") }); 

     // How to map a collection value to csv column 
    } 
} 

私はCSVファイルを読み込むと、2つの異なるテーブル 私は すなわちテンプレートと templateitemをtemplateitemからマップされたテーブルの2つの異なるモデルを持っているにCSVの列をマップする必要があるのです使用してコレクションをマッピングする方法テンプレート csvクラスのマッピング方法CSVヘルパー

答えて

2

現在、これはできません。コレクションを手動で処理する必要があります。すべてをマッピングファイルに保存する場合は、ConvertUsingを使用する方法があります。ここで

は一例です:

void Main() 
{ 
    using (var stream = new MemoryStream()) 
    using (var writer = new StreamWriter(stream)) 
    using (var reader = new StreamReader(stream)) 
    using (var csv = new CsvReader(reader)) 
    { 
     writer.WriteLine("1,a,b,c"); 
     writer.WriteLine("2,d,e,f"); 
     writer.Flush(); 
     stream.Position = 0; 

     csv.Configuration.HasHeaderRecord = false; 
     csv.Configuration.RegisterClassMap<TestMap>(); 
     csv.GetRecords<Test>().Dump(); 
    } 
} 

public class Test 
{ 
    public int Id { get; set; } 
    public List<string> Names { get; set; } 
} 

public class TestMap : CsvClassMap<Test> 
{ 
    public TestMap() 
    { 
     Map(m => m.Id); 
     Map(m => m.Names).ConvertUsing(row => 
     { 
      var list = new List<string>(); 
      list.Add(row.GetField(1)); 
      list.Add(row.GetField(2)); 
      list.Add(row.GetField(3)); 
      return list; 
     }); 
    } 
} 
+0

私は、エンティティフレームワークのアーキテクチャを持ち、複数のテーブルに単一のCSVからのデータをアップロードする必要があります。私はどうすればいいのですか? – Richard

+0

ドキュメントを見ましたか? http://joshclose.github.io/CsvHelper/ –

+0

こちらの質問もここで検索してください。この質問は、複数の方法で複数回回答されています。 https://github.com/JoshClose/CsvHelper/issues –