ASP.NET与Firebird数据库问题

时间:2012-07-22 06:57:28

标签: asp.net-mvc entity-framework firebird edmx

您是否曾尝试使用Firebird数据库创建ASP.NET MVC项目...我尝试了,并且很难..

我的问题:

  • 我为Visual Studio 2010工作过Firebird提供程序。
  • 我有正确的数据库,只需要增加表格的ID。
  • 我创建了ASP.NET MVC 3项目,包含数据库,如EDMX文件,带有实体。
  • 当我尝试将记录插入表格时,会出现一个问题:
  

FirebirdSql.Data.Common.IscException:违反PRIMARY或UNIQUE KEY约束" PK_USERS"在表格" USERS"

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

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

2 个答案:

答案 0 :(得分: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,则此触发器仅分配生成的值。

另见: http://www.firebirdsql.org/file/documentation/reference_manuals/reference_material/html/langrefupd25-ddl-sequence.htmlhttp://www.firebirdfaq.org/faq29/(此链接讲述了生成器,Firebird中旧序列的名称)。

答案 1 :(得分:1)

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