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 字符串的实体框架列类型的主要内容,如果未能解决你的问题,请参考以下文章