0
我已將POCO映射到視圖。當EF確實插入,它生成以下命令插入視圖中不返回主鍵
INSERT INTO "public"."vw_place"("Name","Description","Point") VALUES ($1,$2,$3) RETURNING "PlaceId"
但代碼,引發以下錯誤...
{「空存儲生成的值被用於返回非空的成員 類型的「PlaceId 'DataAccess.Place'。」}
這裏是觸發功能,做插入...
CREATE OR REPLACE FUNCTION vw_place_dml()
RETURNS trigger AS
$BODY$
BEGIN
IF TG_OP = 'INSERT' THEN
INSERT INTO tbl_place
(
"Name",
"Description",
"Point"
)
VALUES
(
NEW."Name",
NEW."Description",
ST_GeomFromWKB(NEW."Point", 4326)
);
RETURN NEW;
ELSIF TG_OP = 'UPDATE' THEN
UPDATE tbl_place SET
"PlaceId" = NEW."PlaceId",
"Name" = NEW."Name",
"Description" = NEW."Description",
"Point" = ST_GeomFromWKB(NEW."Point", 4326)
WHERE
"PlaceId" = OLD."PlaceId";
RETURN NEW;
END IF;
RETURN NEW;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION vw_place_dml()
OWNER TO postgres;
如果我在pgAdmin中運行它,它不會返回任何內容,這是問題,但行已成功插入並生成了PlaceId。
INSERT INTO "public"."vw_place"("Name","Description","Point") VALUES
('ergw','regr','\x0101000000000000009846b2bfe4e068d7ff33a73f')
RETURNING "PlaceId"
不知道這是併發安全。在Sql Server中不是。 Doens't Postgresql有相當於SS的'Scope_Identity'功能嗎? –
我認爲就是這樣。它在這裏說currval,https://www.postgresql.org/docs/8.2/static/functions-sequence.html,「請注意,因爲這是返回一個會話本地值,它給出了一個可預測的答案,無論其他自本屆會議以來,會議已經執行了nextval。「 –