Base64 字符串的实体框架列类型

Posted

技术标签:

【中文标题】Base64 字符串的实体框架列类型【英文标题】:Entity Framework Column Type for Base64 String 【发布时间】:2012-04-11 19:13:22 【问题描述】:

我使用的是代码优先实体框架,我的四列是图像的 base64 表示,并且是字符串类型。最初,我允许 EF 将这些存储为默认的 nvarchar(max)。我今天了解到 nvarchar(max) 是数据实际大小的两倍,在处理图像时这种差异是巨大的。

我尝试使用 varchar,但它的最大长度似乎是 8000,这对于 base64 图像来说太小了。我也尝试过 text,但这似乎不是有效的类型。

对于什么是支持数据长度同时保持合理大小的好类型有什么建议吗?

【问题讨论】:

base64 编码的过程相当便宜(就 CPU 而言),您可以考虑将数据存储为二进制并将其以代码形式转换为 base64 以供需要以这种形式使用它的任何人使用。跨度> 没错,但是将 base64 字符串存储在数据库中的一件非常方便的事情是,您可以通过 SQL 检索图像并将其放入在线转换器中。这消除了检索图像的工具的需要。 “将其放入在线转换器中。这样就无需使用工具来检索图像”-您是什么意思?你想到了什么工具? 如果我想从数据库中提取图像,我可以使用 sql server management studio 并将 base64 转储到我的剪贴板,然后将我的剪贴板转储到这个站点。 opinionatedgeek.com/dotnet/tools/base64decode 好的,对我来说这是一个非常罕见的用例。考虑一下这种设计,将文件存储为 base64 文本不是一个好的选择。 【参考方案1】:

你可以试试text of varchar(max)

【讨论】:

是的,这行得通,我遇到了错误,因为我尝试将所有列都设置为 varchar(max),我猜你不能使用 varchar(max) 作为主键。将我的图像字段设置为 varchar(max) 似乎可以解决问题。

以上是关于Base64 字符串的实体框架列类型的主要内容,如果未能解决你的问题,请参考以下文章

PostgreSQL - 如何将 Base64 图像字符串插入 BYTEA 列?

如何处理 TypeORM 中的 blob 列

实体框架:在场景后面序列化/反序列化JSON列

从 Base64 编码的字符串中检索 MIME 类型

base64 在执行 WHERE 之前解码 mysql 列

如何从 base64 字符串获取 MIME 类型?