作为示例,假设有一个简单的 POCO 类型,包含一个名为 data 的字符串属性和一个 ID 属性。
使用 EF Core 保存实体之前,最好的方法是调用
实现这个功能的自定义 SQL 示例如下:
选择实体的方式是使用类似于此的语法,插入实体的方式是使用以下格式:
使用 EF Core 保存实体之前,最好的方法是调用
COMPRESS(data)
函数来压缩数据,并在加载时调用 DECOMPRESS(data)
函数。相应地,数据库列的类型应该是 VARBINARY。实现这个功能的自定义 SQL 示例如下:
SELECT Id, DECOMPRESS(@Data) as [Data]
FROM table
选择实体的方式是使用类似于此的语法,插入实体的方式是使用以下格式:
INSERT INTO table
VALUES(@Id, COMPRESS(@Data))
注:
这是SQL Server。
当前字符串长度可以达到几千个字符,因此在数据库方面使用PAGE或ROW压缩的定长NVARCHAR
不是一个选择。
SELECT COMPRESS(@Data)
,但我不建议这样做。因为这会导致性能问题。其他选项是创建一个视图来查询解压缩的数据和一个存储过程来插入/更新压缩的数据。 - Preben Huybrechts