【问题标题】:Using FileStream in SQL with code first in ASP.NET Core首先在 ASP.NET Core 中使用 SQL 中的 FileStream 和代码
【发布时间】:2020-01-19 19:43:56
【问题描述】:

我需要创建一个表并在该表中使用FileStream。在 SQL Server 表中,我需要使用这一列:

CREATE TABLE TestTable
(
    FileID  UNIQUEIDENTIFIER NOT NULL ROWGUIDCOL UNIQUE DEFAULT(NEWID()),
    Pic     VARBINARY(MAX) FILESTREAM NULL
)

现在在 EF Core 代码优先中如何创建此列?

【问题讨论】:

  • 这是一个关于生成列的问题,对吧?没有使用该列?
  • @gunr2171 我需要使用 codefirst 在模型中添加两​​个 colmun
  • 在我提出澄清问题时重复您在帖子中所说的话并不能回答问题。
  • This 是 EF 早期版本的答案。我怀疑功能发生了变化。
  • @gunr2171 generation

标签: c# asp.net-core ef-code-first entity-framework-core


【解决方案1】:

在 EF 内核中,您不能使用 FileStream 将文件保存到数据库。

相反,您需要将文件转换为byte[](这将在sql server 中转换为varbinary(max))并在使用内存流上传时复制文件内容。

型号:

public byte[] Picture { get; set; }

将文件转换为字节数组:

using (var ms = new MemoryStream())
{
  file.CopyTo(ms);
  byte[] fileBytes = ms.ToArray();
  string s = Convert.ToBase64String(fileBytes);
  // act on the Base64 data
}

参考

Store files in database using Entity Framework Core

How to convert a file into byte array in memory?

【讨论】:

  • 所以从您的回答来看,这意味着 EF Core 不能用于将文件存储为 Filestream,而只能存储为 varbinary?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-28
  • 1970-01-01
  • 2020-10-08
  • 1970-01-01
  • 2016-06-06
  • 1970-01-01
相关资源
最近更新 更多