实体框架ORA-00932:不一致的数据类型:"'预期CLOB得到CHAR"

3pe*_*per 7 c# oracle entity-framework clob oracle-manageddataaccess

Oracle.ManagedDataAccess.EntityFramework 6.122.1.0库用于从MVC ASP.Net应用程序访问Oracle数据库.这是截至2017年11月14日NuGet的最新图书馆版本

protected override Expression<Func<MyEntity, object>> getSelector()
{   
    return m => new
    {
        ID = m.ID,
        NAME = m.Name,
        LONGSTRING = "Blah-blah-blah-blah...some thousands characters..." + 
                      m.ID + "blah-blah...blah" 
    };
}

protected override ProblemMethod()
{
    var result = db.MyEntity.Select(getSelector()).ToList();
}
Run Code Online (Sandbox Code Playgroud)

有问题.发生这种情况,因为非常长的字符串(几千个字符)被连接进去 LONGSTRING,执行Select抛出下一个异常.

ORA-00932:不一致的数据类型:"'预期CLOB得到了CHAR"

我的班级需要获得ExpressionGetSelector()压倒一切的.如何克服错误或绕过它?一种绕过的方法是强制EF Select在客户端上执行.怎么做?

PS:俄语同样的问题.

UPDATE

我应该提出MyEntity

 CREATE TABLE MyEntity (ID NUMBER(10), Name VARCHAR2(100));
Run Code Online (Sandbox Code Playgroud)

小智 5

如果您想在客户端执行选择(即加载所有 MyEntity 并在客户端过滤它们),您可以执行以下操作:

var result = db.MyEntity.ToList().AsQueryable().Select(getSelector()).ToList();
Run Code Online (Sandbox Code Playgroud)

第一个 ToList() 从数据库加载所有实体。AsQueryable() 允许您使用 Expression 函数。

我希望这有帮助。

干杯,尼古拉