-1

你有没有试过用 Firebird 数据库创建一个 ASP.NET MVC 项目……我试过了,很难……

我的问题:

  • 我有适用于 Visual Studio 2010 的 Firebird 提供程序。
  • 我有正确的数据库,其中包含增加表 ID 所需的一切。
  • 我创建了 ASP.NET MVC 3 项目,其中包含数据库,如 EDMX 文件,以及实体。
  • 当我尝试将记录插入表中时,会出现以下问题:

FirebirdSql.Data.Common.IscException:违反表“USERS”上的 PRIMARY 或 UNIQUE KEY 约束“PK_USERS”

这意味着创建的记录的 id 不会增加。我有必须生成新 id 的存储过程。

我的问题是:
如何从 ASP.NET 在 Firebird 数据表中插入记录?

4

2 回答 2

2

在 Firebird 中,如果您想要具有类似自动增量的行为,则需要将触发器与序列(生成器)结合使用。否则,您需要确保自己分配一个唯一的 ID。

要创建序列:

CREATE SEQUENCE mytable_id_sq;

创建用于分配唯一 i 的触发器(在名为 mytable 的表上)

set term !! ;
CREATE TRIGGER T1_BI FOR mytable
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
if (NEW.ID is NULL) then NEW.ID = NEXT VALUE FOR mytable_id_sq;
END!!
set term ; !!

INSERT如果语句中没有分配 ID,则此触发器只会分配生成的值。

另请参阅:Firebird 2.5 语言参考中的SEQUENCE( GENERATOR)部分和如何创建自动增量列?(此链接讨论生成器,即 Firebird 中序列的旧名称)。

于 2012-07-22T07:58:19.490 回答
1

您的 EDMX 可能没有正确生成。您必须StoreGeneratedPattern手动设置或使用http://blog.cincura.net/230841-generated-primary-key-in-entity-framework-model-from-firebird/

于 2012-07-22T10:40:28.437 回答