如何用 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 插入字节数组数据?的主要内容,如果未能解决你的问题,请参考以下文章