我正在尝试使用c#在Microsoft Access数据库中创建一对一关系。到目前为止,我有以下代码(据我所知)应该创建一个一对一的关系:
这将创建2个表并在它们之间建立关系,但当我查看Access中的MSysRelationship表时,它给出了一个4096的grbit(代表一对多),而不是4097代表的一对一:
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表时,它给出了一个4096的grbit(代表一对多),而不是4097代表的一对一:
(来源: richardn.co.uk)
当我查看关系窗口中的关系图时,它显示这是一个一对多的关系,但在编辑关系窗口中,它说这是一个一对一的关系:
(来源: richardn.co.uk)
我真的卡在这里了,因为在Access中,如果我编辑关系并更改其中一个设置,然后单击确定,它会立即在窗口中变成一对一的关系,并且grbit更改为4097。在我的代码中,我错过了什么来最初将关系设置为一对一以及grbit为4097?