首先,我在我的应用程序中使用 LinqToSQL 和数据上下文来查询和更新数据库。我的应用程序是 Windows Phone 7 应用程序。
好的,可以说我有 3 个带有这样列的表
- 表 A -
Id, Name, Description
- 表 B -
Id, Count, Cost
表 C -
Id, Name, Description, Type
我想在表 A 和 B 之间建立一对多的关系(许多表 B 到 1 个表 A)
- 我想在表 C 和 B 之间建立一对多的关系(许多表 B 到 1 个表 C)
所以我添加了额外的列来用于关系,所以现在我的 3 个表看起来像这样。
- 表 A -
Id, Name, Description
- 表 B -
Id, Count, Cost, TableA_Id, TableC_Id
- 表 C -
Id, Name, Description, Type
我尝试设置上述内容,但表 B 将有 2 个约束,如果我在代码中执行类似的操作
TableA Ta = new TableA();
Ta.Name = "NA";
Ta.Description = "NA";
Ta.TableB.Add( new TableB()
{
Count = 1,
Cost = 100
});
App.MyDataContext.Database.TableA.InsertOnSubmit(Ta);
App.MyDataContext.Database.SubmitChanges();
我收到这样的错误
无法插入外键值,因为对应的主键值不存在。[ 外键约束名称 = FK_TableC_TableB ]
现在我想我明白为什么我有错误,但我问有没有办法设置这个设置,所以我可以在没有错误的情况下获得相同的结果。我用过一点 SQL 和 SQL Server CE,但这是我第一次尝试这种方式的关系。
编辑:为了澄清起见,TableA 可以包含几个 TableB。TableC也可以包含几个TableB