自我引用表LINQ

时间:2011-01-17 14:23:33

标签: asp.net linq linq-to-sql

您好我有一个表有“id”字段和“parentid”字段。这两个字段都是必需的,因此您无法将空值插入到parentid列中以将其标记为层次结构的“根”。我遇到linq的问题,当我创建一个新的“root”时,我必须放入一个虚拟的parentid,直到我知道新root的id,然后我必须用正确的id更新parentid字段并保存它再次。这看起来很傻,但我还没有找到更好的方法来实现这个目标呢?

TableWithHeirachy xobj = new TableWithHeirachy();
xobj.property1 = "test";
db.TableWithHeirachy.InsertOnSubmit(xobj);
db.SubmitChanges();
xobj.parentid = xobj.id;
db.SubmitChanges();

这看起来真的很糟糕。请告诉我有更好的方法!

1 个答案:

答案 0 :(得分:1)

在插入完成之前,SQL语句将不知道它将要插入的行的未来ID。

因此,要么像现在一样继续 - 要么使用特殊值来表示根记录(null,-1等)。