我正在尝试使用自己的记录在table A
上创建一对多关系。
我以为我可以创建第二个table B
,其中两个外键链接到table A
。看起来这还不够,因为LINQ-to-SQL产生了一对一的关系。我错过了什么?
某些上下文:table A
包含标记,标记可以是标记的子标记。
编辑:也许我需要多对多的关系?
答案 0 :(得分:0)
SQL Server不允许您为使用ON DELETE CASCADE
或ON UPDATE CASCADE
引用自身的表创建外键,因为它可能会导致循环或多个级联路径。但您可以使用ON DELETE NO ACTION
和ON UPDATE NO ACTION
创建外键。
ALTER TABLE tagtablename ADD FOREIGN KEY ([parent_id]) REFERENCES [tagtablename] ([id]) ON DELETE NO ACTION ON UPDATE NO ACTION
答案 1 :(得分:0)
假设您有一个包含以下列itemid和MasterID的表 在列masterid中,你有它链接到的项目的itemid
select a.Itemid,b.itemid from table1 as a inner join table1 as b on a.Itemid=b.MasterID
上面的查询会给你一个这样的结果:
a_itemid b_itemid 3020079 3020334 3020079 3020335 3045396 3045397 3045396 3045398 3045396 3045401 3020079 3577149
答案 2 :(得分:0)
您还需要在链接表B中创建两个键,即此表的主键。
此外,Linq2SQL似乎根据您的密钥名称生成属性。这给我带来了一些奇怪的名字。