C# を使用して、Microsoft Access データベースで 1 対 1 の関係を作成しようとしています。これまでのところ、(私が理解していることから) 1 対 1 の関係を作成する必要がある次のコードがあります。
OleDbConnection dbCon = new OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = d:\\Test.mdb; Jet OLEDB:System Database=c:\\secure.mdw; User Id=321; Password=123;");
dbCon.Open();
String szTable1 = "CREATE TABLE Table1 (Field1 int UNIQUE NOT NULL PRIMARY KEY)";
OleDbCommand table1Cmd = new OleDbCommand(szTable1, dbCon);
table1Cmd.ExecuteNonQuery();
String szTable2 = "CREATE TABLE Tablea (Fielda int UNIQUE NOT NULL PRIMARY KEY)";
OleDbCommand table2Cmd = new OleDbCommand(szTable2, dbCon);
table2Cmd.ExecuteNonQuery();
String szRelationship1 = "ALTER TABLE Table1 ADD CONSTRAINT TableLink FOREIGN KEY (Field1) REFERENCES Tablea(Fielda) ON DELETE CASCADE";
OleDbCommand relationship1Cmd = new OleDbCommand(szRelationship1, dbCon);
relationship1Cmd.ExecuteNonQuery();
dbCon.Close();
これにより、2 つのテーブルが作成され、それらの間に関係が作成されますが、Access で MSysRelationship テーブルを見ると、1 対 4097 ではなく 4096 (1 対多) の grbit が表示されます。 1:
(出典: richardn.co.uk )
リレーションシップ ウィンドウでリレーションシップを見ると、リレーションシップ ダイアグラムでは 1 対多のリレーションシップであることが示されていますが、リレーションシップの編集ウィンドウでは 1 対 1 のリレーションシップであると表示されています。
(出典: richardn.co.uk )
Access でリレーションシップを編集して設定の 1 つを変更し、[OK] をクリックすると、ウィンドウ内で即座に 1 対 1 のリレーションシップになり、grbit が 4097 に変更されるため、私は本当にここで立ち往生しています。もともと 4097 の grbit で 1 対 1 の関係を設定する私のコードは?