从平面文件加载数据的通用实体

时间:2011-11-03 20:52:09

标签: c# entity-framework generics

基本上我有两个不同的平面文件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类应该是什么样子以及它与实际实体类的关系。

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

1 个答案:

答案 0 :(得分:0)

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

我删除了帐户和信用平面文件实体,现在只有这两个的详细记录实体。

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>();
    }
}