代码之家  ›  专栏  ›  技术社区  ›  Nestor

如何将整个实体框架核心上下文从服务器发送到客户端

  •  0
  • Nestor  · 技术社区  · 7 年前

    我有一个asp.net核心服务器应用程序,它使用entity framework核心来提供其sql服务器的数据。

    有些客户端可以通过rest api调用使用数据。

    在通信开始时,需要在客户机上拥有所有数据,但使用现有的rest调用 分钟 因为上下文包含数千个实体。

    所以我找了些主意,试着做了如下的事情。

    最好的想法是某种序列化,所以我创建了以下方法:

    public byte[] GetData()
    {
       string data = Newtonsoft.Json.JsonConvert.SerializeObject(this.ChangeTracker, 
                     new Newtonsoft.Json.JsonSerializerSettings {
                     ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore });
       return CompressAsGZip(data);
    }
    

    结果:

    • 序列化(然后压缩) ChangeTracker 上下文的
      • 最初 变更跟踪器 为空,因此除非查询所有数据,否则无法执行此操作
    • 序列化(然后压缩)整个dbcontext
      • 它有很多东西,20%后我得到了一个 OutOfMemory异常

    我应该创建一个数据库备份并发送压缩的bak文件吗?我想我无法将其还原到任何地方,因为客户端数据库提供程序不同( 数据库 )。

    什么是将所有数据尽可能快地发送到客户端的最佳方式?

    1 回复  |  直到 7 年前
        1
  •  -1
  •   data George    7 年前

    第一个问题是问问自己是否真的需要这些数据。

    如果你真的需要全部发送-为什么不分块发送呢?

    推荐文章