2011-11-03 59 views
2

基本上我有两个不同的平面文件Credit &具有不同记录结构的帐户。我为它们的Header,Detail和Footer记录以及整个文件创建了独立的实体。从平面文件加载数据的通用实体

文件帐户:

namespace Data.Entities 
{ 
    [FlatFileContainerRecord(RecordLength = 100)] 
    public class AccountFlatFile 
    { 
     public AccountHeader Header { get; set; } 
     public List<Data.Entities.AccountDetail> Details { get; set; } 
     public AccountFooter Control { get; set; } 
     public AccountFlatFile() 
    { 
     Details = new List<AccountDetail>(); 
} 

文件来源:

namespace Data.Entities 
{ 
    [FlatFileContainerRecord(RecordLength = 90)] 
    public class CreditFlatFile 
    { 
     public CreditHeader Header { get; set; } 
     public List<Data.Entities.CreditDetail> Details { get; set; } 
     public CreditFooter Control { get; set; } 
     public CreditFlatFile() 
    { 
     Details = new List<CreditDetail>(); 
    } 
} 

我创建了一个通用的工作来执行的文件。这是我卡住的地方。

foreach (string file in incomingFile) 
{ 
     GenericFile<T> genericFile = new GenericFile<T>();     
     using (Stream stream = File.OpenRead(file)) 
     { 
      **genericFile = serializer.Deserialize<GenericFile<T>>(stream);** 
     } 

     if (genericFile.Details.Count > 0) 
     { 
       System.Threading.Tasks.Parallel.For(0, genericFile.Details.Count, parallelOptions, index => 
       { 

        Repo.Upsert(genericFile.Details[index]); 
       }); 
     } 
     else 
     { 
         //log error 
      } 

} 

我不确定GenericFile类应该是什么样子,它如何与实际的实体类相关。

希望我对这个问题很清楚。任何建议表示赞赏

+0

这个问题很不清楚。我不确定问题是什么,或者你希望我们做什么/建议。 –

+0

我想知道我应该如何定义这个GenericFile 类。 – Netswannabe

+0

我可能会错过它,但我无法真正看到任何关于你想要该类做什么/行为的地方 - 因此......我们将如何知道? –

回答

0

最后这是我得到的通用结构。

我删除了帐户和贷记flatfile实体,现在只有这两个详细记录实体。

namespace Data.Entities 
{ 
    [FlatFileContainerRecord(RecordLength = 157)] 
    public class FlatFile<FlatFileHeader, DT, FlatFileFooter> 
    { 
     public FlatFileHeader Header { get; set; } 
     public List<DT> Details { get; set; } 
     public FlatFileFooter Control { get; set; } 
     public FlatFile() 
    { 
     Details = new List<DT>(); 
    } 
}