目前,我有一个代码,第一种模式是这样的:实体框架4.1代码第一次和Oracle CLOB
public class Ticket
{
public int SERIAL_NO { get; set; }
public DateTime SUBMIT_DATE { get; set; }
public string SYNOPSIS { get; set; }
public string DESCRIPTION { get; set; } // This is really an Oracle CLOB in the DB
}
在售票控制器,当用户点击提交,我有选择的最大SERIAL_NO出来的数据库的,就像这样:
var lastSerial = db.Tickets.Select(x => x.SERIAL_NO).Max();
它抛出这个错误:
ORA-00932: inconsistent datatypes: expected - got NCLOB
人有什么想法?提前致谢!
其实,我认为你没有获取整个实体,只有SERIAL_NO。检查发送到数据库的实际SQL(请使用它更新您的问题)。确保数据库中的SERIAL_NO类型为int – surfen 2012-04-04 11:30:16
这是发送到数据库的实际SQL。这是Linq。如果我从代码优先模型中删除DESCRIPTION字段,它不会中断。你是正确的,我只想在这种情况下SERIAL_NO,但虽然我几乎可以肯定,它是破坏性的,因为描述的数据类型不匹配那是数据库,我不知道如何转换它或使它比赛。 – 2012-04-04 12:06:44
我明白了。出于某种原因,它试图加载实体并失败。它甚至不应该尝试用所提供的代码来做到这一点。顺便说一下,为什么在提交期间获取最后一个序列?如果你用这个来增加新的Ticket的id,那么这是一个不好的做法,因为当多个用户同时添加Tickets时,它会导致bug。你应该使用'Sequence'和'Trigger'来代替。 – surfen 2012-04-04 12:14:46