我在某些项目中使用PostgreSQL和EF6。
我想静默拒绝我插入的有重复数据的行。该表非常简单,看起来像:
CREATE TABLE data
(
table_id PRIMARY KEY
table_element
)
将id_table作为自动增量键。
在PostgreSQL方面,我使用这个简单的触发器来拒绝重复:
CREATE OR REPLACE FUNCTION checkDuplicate()
RETURNS trigger AS
DECLARE
datacount integer;
BEGIN
SELECT Count(table_id) into datacount
FROM data WHERE table_element = NEW.table_element;
IF (datacount > 0) THEN
RETURN null;
ELSE
RETURN new;
END IF;
END;
使用" BEFORE INSERT"将此功能设置为触发器。返回null时,PostgreSQL不会按预期插入行。
但是,实体框架会抛出System.Data.Entity.Infrastructure.DbUpdateException
,并带有可预期的消息A null store-generated value was returned for a non-nullable member 'table_id'
;显然从未设置table_id,因为该行被拒绝了。
我想知道如何告诉Entity Framework忽略行而不是触发异常并继续插入下一行。