[英]How to execute a trigger from PL/SQL before inserting a row on a table with Entity Framework database-first?
我已经在PL / SQL中创建了一个触发器,该触发器是在表中插入行之前触发的,这是通过Oracle序列增加值,然后作为主键插入到表中的。
这是我从PL / SQL触发的代码:
create or replace trigger FUT_SYS_USER_BE_I
before insert on FUT_SYS_USER referencing old as O new as N
for each row
declare
--local variables here
begin
if :N.SYS_USER_ID is null then
:N.SYS_USER_ID := SYS_USER_SEQ.NEXTVAL;
end if;
end FUT_SYS_USER_BE_I;
但是此触发器永远不会执行,因为当我插入一行时,主键SYS_USER_ID
永远不会增加并保存零值。
这是我的C#代码:
using(DemoDBEntities db = new DemoDBEntities())
{
FUT_SYS_USER SU = new FUT_SYS_USER();
SU.LOGIN_NAME = user.LoginName;
SU.PASSWORD_ENCRYPTED_TEXT = user.Password;
SU.ROW_CREATED_SYSUSER_ID = user.SYSUserID > 0 ? user.SYSUserID : 1;
SU.ROW_MODIFIED_SYSUSER_ID = user.SYSUserID > 0 ? user.SYSUserID : 1;
SU.ROW_CREATED_DATETIME = DateTime.Now;
SU.ROW_MODIFIED_DATETIME = DateTime.Now;
db.FUT_SYS_USER.Add(SU);
db.SaveChanges();
}
关于如何解决此问题的任何想法?
您需要将该列的.edmx
模型属性中的键列(SYS_USER_ID)的StoreGeneratedPattern设置为Identity。 如果将来从.edmx
模型中删除该表并重新创建,则需要再次进行设置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.