如何用 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 在字节数组中搜索以特定字节开始/停止的所有子数组
如何使用 LINQ to Entities 获取字节数组长度?