我在Oracle中有一个表和一个序列:
CREATE TABLE USER1.TABLE1 (
ID number(9,0) NOT NULL,
FIELD_1 nvarchar2(64) NOT NULL,
FIELD_2 nvarchar2(256),
CONSTRAINT PK_TABLE1 PRIMARY KEY ( ID )
) ;
CREATE SEQUENCE USER1.SEQ_TABLE1 START WITH 1 ;
我还有一个用C#定义的类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using ServiceStack.DataAnnotations;
namespace OraTest
{
public class Table1
{
[AutoIncrement]
public int Id { get; set; }
public string Field_1 { get; set; }
public string Field_2 { get; set; }
}
}
我还有一个DTO类,一个服务类和数据存储库类,我有一个数据插入代码:
...
using (var db = DbConnectionFactory.OpenDbConnection())
{
db.Insert(data);
}
...
当我尝试插入记录时,我得到“ORA-02289:序列不存在”。
如何告诉OrmLite使用哪个序列?
答案 0 :(得分:0)
你获得ORA-02289的原因是因为没有信息在哪里查找序列。
您需要做的就是在定义数据模型类的类的顶部添加[Sequence()]属性。如果您有一个数据表TABLE1和Oracle数据库中定义的相应序列SEQ_TABLE1,那么您的示例将是:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using ServiceStack.DataAnnotations;
namespace OraTest
{
public class Table1
{
[AutoIncrement]
[Sequence("SEQ_TABLE1")]
public int Id { get; set; }
public string Field_1 { get; set; }
public string Field_2 { get; set; }
}
}
现在应该使用定义的序列将新记录添加到Oracle表中。