0

首先,我在我的应用程序中使用 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

4

0 回答 0