【问题标题】:Entity Framework Column Type for Base64 StringBase64 字符串的实体框架列类型
【发布时间】: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 文本不是一个好的选择。

标签: c# sql entity-framework ef-code-first base64


【解决方案1】:

你可以试试text of varchar(max)

【讨论】:

  • 是的,这行得通,我遇到了错误,因为我尝试将所有列都设置为 varchar(max),我猜你不能使用 varchar(max) 作为主键。将我的图像字段设置为 varchar(max) 似乎可以解决问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 2021-09-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多