实体框架将所有字段放在Firebird表的主键中

时间:2013-02-28 16:55:35

标签: entity-framework orm firebird dd firebird2.1

我正在使用Firebird 2.1数据库和VS2010(.NET 4.0),并试图让它与实体框架一起正常工作。

问题是,当我从数据库表生成实体时,框架会检测所有列是主键的一部分。该表非常简单,有两个整数列,其中一个被设置为主键。

我甚至将“#PK_GEN#”设置为主键列的注释。

在EF-Editor中,我无法修改商店对象的主键属性,因为我必须处理可空列,这是一个问题。我可以编辑模型文件的XML代码,但更新模型时更改是非持久性的,因此这是一个显示停止。

由于我只阅读有关视图而非表格的类似问题,我显然做错了,但我无法弄清楚。

编辑:顺便说一下,我刚刚测试了VS 2012的行为,但它保持不变。

这是CREATE脚本。因为我是Firebird的新手,所以我这里也可能有些不对劲,但我真的不这么认为。

CREATE GENERATOR GEN_TESTTABLE_ID;
CREATE TABLE TESTTABLE (
    TESTTABLE_ID  INTEGER NOT NULL,
    VALUE         INTEGER
);
ALTER TABLE TESTTABLE ADD CONSTRAINT PK_TESTTABLE PRIMARY KEY (TESTTABLE_ID);
COMMENT ON COLUMN TESTTABLE.TESTTABLE_ID IS '#PK_GEN#';

SET TERM ^ ;
CREATE OR ALTER TRIGGER TESTTABLE_BI_GEN_ID FOR TESTTABLE
ACTIVE BEFORE INSERT POSITION 0
AS
begin
  if ((new.testtable_id is null) or (new.testtable_id = 0) ) then
    begin
      new.testtable_id = gen_id(gen_testtable_id, 1);
    end
end
^
SET TERM ; ^

1 个答案:

答案 0 :(得分:2)

问题是,Firebird 2.1包含一个错误,导致这个问题。使用Firebird 2.5生成模型,你会没事的。

部分引用hereherehere