-1

Firebird データベースを使用して ASP.NET MVC プロジェクトを作成しようとしたことがありますか...試してみましたが、難しい..

私の問題:

  • Visual Studio 2010 用の Firebird プロバイダーを使用しています。
  • テーブルのIDを増やすために必要なすべてを備えた正しいデータベースがあります。
  • エンティティを含む EDMX ファイルなどのデータベースを含む ASP.NET MVC 3 プロジェクトを作成しました。
  • テーブルにレコードを挿入しようとすると、次のような問題が発生します。

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 に答える