创建两个表之间的关系

时间:2016-10-23 19:25:36

标签: c# dao

我正在尝试在两个表之间创建关系。 用户选择第一个表(choice1),然后选择第二个表(choice2)并选择第二个表(field2)中的字段。然后他给这个关系命名(namerelationship)

我收到此错误

  

索引或关系定义中的字段定义'ForeignKey'无效

string namerelationship = txtNameRelationship.Text;
string choice1 = cboTable1.SelectedItem.ToString();
string choice2 = cboTable2.SelectedItem.ToString();
string field2 = cboField2.SelectedItem.ToString();

Relation myrel = clsDataSource.mydb.CreateRelation(namerelationship,  choice1, choice2);
Field myfield = new Field();
myfield = myrel.CreateField(choice1);
myfield.ForeignName = "ForeignKey";
myrel.Fields.Append(myfield);
clsDataSource.mydb.Relations.Append(myrel);

1 个答案:

答案 0 :(得分:0)

当使用DAO的Relation对象时,您需要为第一个字段指定第一个表中的现有字段的名称(通常这是主键),而为ForeignName属性指定第二个表的字段的名称作为第一个表的ForeignKey。

假设你有一个带有

的Deparment表
IDDepartment (integer, primary key)
Description (text, not null)

表Employee

IDEmployee (integer, primary key)
Name (text not null)
IDDepartment (integer, foreign key to Department table)

此部门与此类员工表之间存在关系:员工在一个(且仅一个)部门工作。 (1比1)

那么你的代码应该是

string choice1 = "Department";
string choice2 = "Employee";
string fieldPK = "IDDepartment"; // It is the primary key of Department
string fieldFK = "IDDepartment"; // It is the foreign key in table Employee that links to the Department table
Relation myrel = clsDataSource.mydb.CreateRelation(namerelationship,  
                 choice1, choice2);
Field myfield = myrel.CreateField(fieldPK);
myfield.ForeignName = fieldFK;
myrel.Fields.Append(myfield);
clsDataSource.mydb.Relations.Append(myrel);

说我真的建议你尽快从DAO切换到ADO.NET