当前位置:  开发笔记 > 编程语言 > 正文

LINQ-to-SQL +一对多+数据绑定删除

如何解决《LINQ-to-SQL+一对多+数据绑定删除》经验,为你挑选了1个好方法。

我使用LINQ-to-SQL从具有一对多关系的两个表的数据库加载数据(一个Recipe有许多成分).

我加载一个Recipe,LINQ将Ingredient对象检索到绑定到ListBox的EntitySet中.

如果我想从食谱中删除一些成分,我会得到一个"尝试删除食谱和成分之间的关​​系.但是,其中一个关系的外键(Ingredient.RecipeID)不能设置为null.

我通过在DBML文件中添加'DeleteOnNull ="true"'使用众所周知的解决方案解决了这个问题.但添加此设置仅在我们删除从DB检索到的Ingredient对象时才会消除此问题.

问题在于在代码中创建的成分对象(添加到配方中)并添加到成分的EntitySet集合中,然后在调用SubmitUpdates之前删除.然后,再次发生同样的异常.这通常发生在一个新的,未保存的食谱上,当用户向其添加成分,出错并从食谱中删除一种成分时.我将DeleteOnNull添加到DBML中的'Association Name ="Recipe_Ingredient"'行.

我该如何删除这些物品?我目前看到的唯一解决方案是,我会将成分加载到不在DataContext下的集合中,然后在保存时,删除配方中的所有成分,然后再从该缓存中添加..



1> mjwills..:
        try
        {
            // Needed for existing records, but will fail for new records
            yourLINQDataContext.Ingredients.DeleteOnSubmit(ingredient);
        }
        catch (Exception)
        {
            // Swallow
        }

        yourRecipeObject.Ingredients.Remove(ingredient);

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有