我正在 Entity Framework 中执行查询以将 LONG RAW 数据选择到字节数组中。
var result = db.Database.SqlQuery<byte[]>("SELECT MESSAGE FROM FOCUS.ENTRIES");
var list = await result.ToListAsync();
当我执行这段代码时,我得到了一个字节数组列表,但它们都是空的。在数据库中它们不为空。
MESSAGE 表如下所示:
CREATE TABLE "FOCUS"."ENTRY"
( "PRIMKEY" NUMBER,
"TITLE" VARCHAR2,
"MESSAGE" LONG RAW
);
我使用 ODP.NET,托管驱动程序作为数据库提供程序。
我想这是一些映射问题,但我无法弄清楚。
欢迎任何帮助。
谢谢!
最佳答案
SqlQuery 需要一个 class
,其成员名称等同于 SQL 列。
public class MessageInfo{
public byte[] Message;
}
var result = await db.Database
.SqlQuery<MessageInfo>("SELECT MESSAGE FROM FOCUS.ENTRIES")
.ToListAsync();
var list = result.Select( x => x.Message );
Oracle Docs 中的一些笔记,https://docs.oracle.com/html/A96160_01/features.htm
所以尝试添加主键,看看是否可以检索数据。否则,如果您无法更改配置,您将不得不跳过
SqlQuery
并直接使用 ODP.NET 来获取。或者您必须创建 OracleConnection
的实例并将其作为参数传递给 DbContext
的构造函数。关于c# - Entity Framework SqlQuery 选择 LONG RAW 成字节数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41889925/