Vim*_*987 12 .net c# oracle entity-framework ora-00001
我正在使用Oracle提供程序实体框架(beta),我遇到了一个问题.
我们的表有Id列,在StoreGeneratedPattern中设置为Identity.我认为EF会自动执行"基础工作",例如创建序列,并为我添加到表中的每条记录获取新标识.但是当我运行代码来添加新记录时,例如:
var comment = new Comment
{
ComplaintId = _currentComplaintId,
Content = CommentContent.Text,
CreatedBy = CurrentUser.UserID,
CreatedDate = DateTime.Now
};
context.Comments.AddObject(comment);
context.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
一个异常仍然会抛出,这是
{"ORA-00001:违反了唯一约束(ADMINMGR.CONSTRAINT_COMMENT)"}
(CONSTRAINT_COMMENT是约束要求注释标识必须是唯一的.
我该如何解决这个问题?
非常感谢你!
Kri*_*erA 16
StoreGeneratedPattern ="Identity"只是告诉EF该值将在插入时生成DB端,并且它不应在insert语句中提供值.
您仍需要在Oracle中创建序列:
create sequence ComplaintIdSequence minvalue 1 maxvalue 9999999 start with 1 increment by 1;Run Code Online (Sandbox Code Playgroud)
以及使表插入使用它的触发器:
create or replace trigger CommplaintIdTrigger
before insert on comment for each row
begin
if :new.ComplaintId is null then select ComplaintIdSequence.nextval into :new.ComplaintId from dual;
endif;
end;Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11809 次 |
| 最近记录: |