创建与自身的SQL一对多关系
我试图在创建与自身的SQL一对多关系,sql,sql-server,linq-to-sql,foreign-keys,Sql,Sql Server,Linq To Sql,Foreign Keys,我试图在表a上创建一对多的关系,并使用它自己的记录 我想我可以创建第二个表B,用两个外键链接到表a。这似乎是不够的,因为LINQ到SQL生成了一对一的关系。我错过了什么 一些上下文:表A包含标签,标签可以是标签的子标签 编辑:可能我需要一个多对多关系?SQL server不允许您为表创建外键,该表在删除级联时使用或更新级联时使用引用自身,因为这可能会导致循环或多个级联路径。但您可以在删除无操作时使用和更新无操作时使用创建外键 ALTER TABLE tagtablename ADD FOREIG
表a
上创建一对多的关系,并使用它自己的记录
我想我可以创建第二个表B
,用两个外键链接到表a
。这似乎是不够的,因为LINQ到SQL生成了一对一的关系。我错过了什么
一些上下文:表A
包含标签,标签可以是标签的子标签
编辑:可能我需要一个多对多关系?SQL server不允许您为表创建外键,该表在删除级联时使用
或更新级联时使用引用自身,因为这可能会导致循环或多个级联路径。但您可以在删除无操作时使用和更新无操作时使用创建外键
ALTER TABLE tagtablename ADD FOREIGN KEY ([parent_id]) REFERENCES [tagtablename] ([id]) ON DELETE NO ACTION ON UPDATE NO ACTION
假设您有一个包含以下列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
a_itemid b_itemid
3020079 3020334
3020079 3020335
3045396 3045397
3045396 3045398
3045396 3045401
3020079 3577149
您还需要使链接表B中的两个键成为该表的主键
此外,Linq2SQL似乎会根据密钥的名称生成属性。这给我带来了一些奇怪的名字。请编辑您的问题以提供示例数据和预期输出听起来您需要类似于ParentID
列的内容。。。。其中,对于子标记行,使用其父标记的ID填充。