我有一个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文件吗?我想我无法将其还原到任何地方,因为客户端数据库提供程序不同(
数据库
)。
什么是将所有数据尽可能快地发送到客户端的最佳方式?