存储每个用户实体框架6的临时数据

时间:2016-04-13 13:07:43

标签: c# asp.net-mvc entity-framework

我正在创建用户正在上传多个文件的asp.net-mvc应用程序。 数据将与db数据进行比较,稍后处理和导出。也是分页。

显示这些数据时,正在导入排序和过滤。

上传数据时,其中一些将存储在db中,一些将显示为db中未找到,一些将被修改并存储...等等

我的问题是,存储上传数据的最佳方式是什么才能进行处理或查看?

  1. 加载内存
  2. 为每个会话创建临时表? (甚至不知道是否可能)
  3. 可查询的不同存储(使用linq访问数据)(JSON ??)
  4. 另一种选择。
  5. 源文件是(csv或excel)

    其中一个文件示例

    Name    Age     Street    City     Country    Code    VIP
    ---------------------------------------------------------
    Mike    42      AntwSt    Leuven   Belgium    T5Df    No
    Peter   32      Ut123     Utricht  Netherland T666    Yes
    

    班级的例子

    public class User
    {
         public string Name { get; set; }
         public Address Address { get; set; }   // street, city,country
         public Info Info { get; set; }         // Age, and Cres 
    }
    
    public class Info
    {
        public int Age { get; set; }
        public Cres Cres { get; set; }
    }
    
    public class Cres
    {
        public string Code { get; set; }
        public bool VIP { get; set; }  
    }
    

2 个答案:

答案 0 :(得分:1)

如果数据量很小并且您只需要暂时存在它们,请随意将它们存储在内存中,从而减少您使用其他解决方案所需的所有开销。

如果服务器或应用程序因任何原因关闭,您只需要确保内存中的数据将会消失。

考虑如果同一用户第二次执行操作会发生什么,而第一次数据的操作尚未完成,也可能是个好主意。如果这种情况发生在您身上(通常会发生),请确保使用良好的同步机制来防止竞争条件。

答案 1 :(得分:1)

有很多处理这个问题的策略(我实际上只是写了一篇关于这个主题的完整论文),为了达到这个目的,你需要考虑许多不同的考虑因素。

根据存在的数据量以及您正在使用的数据,简单地将信息存储在会话存储中可能非常简单。现在,您实际上如何实现会话存储取决于您,并且pros and cons指向您决定如何执行此操作。

我个人建议使用服务器端会话存储来处理所有内容,并且有多种不同的选项可供选择。例如:SSDBRedis

然后,从那里,您需要一种与客户沟通其数据实际发生的方式。如果多个客户端需要访问相同的数据集并且单个用户上传更改,您将如何向每个用户提醒此更改?同样,有很多选项,您可以使用Pub/Sub Framework来提醒所有侦听客户端。您还可以使用Microsoft的SignalR框架来尝试处理此问题。

对于这个问题,有很多不同的If,But's,Maybe's等等,不幸的是,我不相信有任何一个完美的解决方案可以解决你的问题,而不知道你想要实现的目标。