拒绝使用Entity Framework和PostgreSQL插入行

时间:2014-06-30 07:33:29

标签: c# entity-framework postgresql

我在某些项目中使用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忽略行而不是触发异常并继续插入下一行。

0 个答案:

没有答案