【发布时间】:2012-06-03 19:51:48
【问题描述】:
我正在使用 Linq 2 Sql 快速定制 CMS。
我有一个与自身关联的表,因此任何子菜单都映射到同一个表中的任何父菜单,但我在插入第一个父菜单时遇到问题。
表格看起来有点像这样:
CMSMenu
CMSMenuID
ParentCMSMenuID
Name
Link
与
的关联CMSMenu.CMSMenuID -> CMSMenu.ParentCMSMenuID
在以前版本的数据库/代码中,我只需添加一些代码,例如:
itm = new CMSMenu();
itm.ParentCMSMenuID = 0;
rep.CMSMenus.InsertOnSubmit(itm);
但是由于这个数据库是使用所有外键自动创建的,所以这段代码会导致异常:
INSERT 语句与 FOREIGN KEY SAME TABLE 冲突 约束“CMSMenu_CMSMenu”。数据库发生冲突 “sp.ackahs”,表“dbo.CMSMenu”,列“CMSMenuID”。该声明 已终止。
如何插入顶级菜单(即没有父级)?
因为它没有父母所以我不能添加:
itm.MyParentCMSMenu=*existing cmsmenu item*;
我可以使用子菜单,也不能添加:
itm.MyParentCMSMenu=null;
欢迎任何想法。
谢谢 托比
【问题讨论】:
-
能否在 SQL 中将 MyParentCMSMenu 设置为可为空的列?
-
是的......我觉得有点傻,我期待这会导致关联中的错误,因为 CMSMenuID 不能为空,而 ParentCMSMenuID 可以。谢谢你。
标签: c# asp.net linq-to-sql