1

SQL データベースの自動インクリメント列

このリンクは、SQL に自動インクリメントが存在するかどうかという私の疑問に答えます。

私の現在の問題はこのようなものです、

これらのクラスで表される2つのテーブルがあります

public class A
{
   [Key]
   public int AId{get;set;}
   public int BId{get;set;}
   [ForeignKey("BId")]
   public virtual B pb{get;set;}
}

public class B
{
   [Key]
   public int BId{get;set;}
   public int AId{get;set;}
}

A クラスのオブジェクトの初期化中に、BId can not be null MySQL では、AUTO_INCREMENT次のようにテーブルを初期化して列を宣言できるというエラーが発生します。

INSERT INTO myTable(col2, col3, col4) VALUES('col2','col3','col4');

それcol1が自動インクリメントとして宣言されているとします。BId整数を設定する必要がないように、クラス A で同様のことをしたいと思います。

4

2 に答える 2

1

BId値が必要ない場合は、MySQLで制約を使用して宣言し、NULLC#プロパティもnull許容にしますpublic int? BId

のデフォルト値を設定する場合は、句BIdを使用して宣言できます。DEFAULT

Bそれぞれに新しいものを作成する場合はA、テーブルのトリガーを使用してこれを行うことができますA

于 2013-02-25T14:47:23.460 に答える
1

それは実際には外部キーがどのように機能するかではありません。

主キーを使用して求めていることを実行できます。ID 列の場合は、SQL Server によって主キーが設定されます。ただし、外部キーの場合は、必要な値を既に知っている必要があります。B参照したいの既存のインスタンスがすでに存在している必要があります。それか、 を作成する前にそれを作成する必要がありますA

外部キーの自動インクリメントを要求している場合、実際には外部キーは必要ありません。別のものが必要です。テーブル構造を再考することをお勧めします。

于 2013-02-25T14:46:03.047 に答える