如何用 Linq 插入字节数组数据?

Posted

技术标签:

【中文标题】如何用 Linq 插入字节数组数据?【英文标题】:How to insert byte array data with Linq? 【发布时间】:2020-11-30 04:28:35 【问题描述】:

我已经创建了一个包含 blob 字段的表并将文件传输到字节数组中。

但是在执行代码向表中插入数据时会出错。

Table table = new Table();
table.FileName = FileName;
table.Content = Convert.FromBase64String(input_file);
db.Table.Add(table);
db.SaveChanges();

错误信息是“ora-01460 unimplemented or unreasonable conversion requested”。

我尝试通过 oracle executeNonQuery 代替 Linq 插入相同的数据,它会工作。

但是我想知道为什么使用Linq时会出错。

这是Table类的内容:

public class Table 

    public string FileName  get; set; 
    public byte[] Content  get; set; 

这是我使用的程序集:

Microsoft.EntityFrameworkCore 3.1.6

Oracle.EntityFrameworkCore v3.19.0-beta2

Oracle.ManagedDataAccess.Core v2.19.80

表 DDL:

CREATE TABLE "TABLE" 
(    
 "FILENAME" VARCHAR2(100 BYTE), 
 "FILECONTENT" BLOB
)

【问题讨论】:

您可能希望包含Table 类的定义。 还有Oracle表DDL,以及EF和Oracle驱动的版本。 【参考方案1】:

在我添加 Column Type 和 MaxLength 后它会起作用:

public class Table 

  public string FileName  get; set; 

  [Column("Content", TypeName = "BLOB")]
  [MaxLength(2147483647)]
  public byte[] Content  get; set; 

【讨论】:

以上是关于如何用 Linq 插入字节数组数据?的主要内容,如果未能解决你的问题,请参考以下文章

使用 LINQ 在字节数组中搜索以特定字节开始/停止的所有子数组

如何用JavaScript替换数组中间隔多个参数

如何使用 LINQ to Entities 获取字节数组长度?

Java 演示如何用标准的输入输出流重定向到一个文件

如何在 C# 或 Linq 中比较大于或小于运算符值的两个字节数组?

使用语句在表中插入java字节数组