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

标签 c# entity-framework generics

基本上我有两个不同的平面文件 Credit & Account 具有不同的记录结构。我已经为它们的页眉、详细信息和页脚记录以及整个文件创建了单独的实体。

文件帐户:

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 类应该是什么样子以及它与实际实体类的关系。

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

最佳答案

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

我删除了 Account 和 Credit 平面文件实体,现在只有这两个的 detailrecord 实体。

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

关于c# - 从平面文件加载数据的通用实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8001704/

相关文章:

c# - CefSharp WinForms Web 浏览器不显示

c# - SignalR:调用返回值的方法

c# - 创建新 View 时如何初始化 View 模型中的属性?

c# - Entity Framework 无法更改关系,因为一个或多个外键属性不可为空

c# - Entity Framework 6.1.1 DbJoinExpression 获取所有左列

java - 抽象类中的类型安全问题

c# - 如何根据分钟舍入小时数(如果分钟<30,小时+0,否则小时+1)?

c# - 如何选择与对象列表中的属性值共享属性值的所有对象?

使用 swift_dynamicCastUnknownClass 将 Swift 泛型转换为 Protocol 失败

python - Django:如何检索由 `` object_detail`` 通用 View 选择的对象?