c#-删除所有一对多的关联项目-Telerik OpenAccess ORM
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#-删除所有一对多的关联项目-Telerik OpenAccess ORM,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1265字,纯文字阅读大概需要2分钟。
内容图文
![c#-删除所有一对多的关联项目-Telerik OpenAccess ORM](/upload/InfoBanner/zyjiaocheng/678/2228c7be6fef4acaa28e4b6491476e82.jpg)
使用Telerik OpenAccess ORM,我有2个对象:用户和投资.更具体地说,投资包含作为任何典型的一对多关系的用户外键.换句话说,每个用户可以有多个投资,但每个投资只能有一个用户.
然后,我尝试使用开放访问功能“已管理”
这应该意味着我可以做类似User.Investments.Clear();的操作.并删除了所有相关投资(或至少在多对多关系中正常),但是不幸的是,当我尝试执行此操作时,遇到以下错误.
“Update failed: Telerik.OpenAccess.RT.sql.SQLException: Cannot insert
the value NULL into column ‘UserID’, table
‘CODECorp.dbo.Investment’; column does not allow nulls. UPDATE
fails.”
显然,ORM试图做的是从投资对象中删除与用户的关联(即外键),而不是删除它.我已经通过运行SQL事件探查器确认了这一点,并且可以看到它正在运行更新而不是删除.
那我在这里想念什么?为什么错误地尝试删除关联而不是像您期望的那样简单地删除行?
解决方法:
通过设计,在从父对象的集合中删除子对象的情况下,将IsManaged设置为True的导航属性的行为是删除两个对象之间的关系.换句话说,Telerik Data Access(以前称为Telerik OpenAccess ORM)将子记录保留在数据库中,但会生成一条语句,尝试将外键设置为NULL.
在这种情况下,解决方案是将集合传递给上下文的Delete方法.例如:
dbContext.Delete(User.Investments);
dbContext.SaveChanges();
这将产生必要的DELETE语句. this documentation article提供了有关使用Telerik Data Access管理导航属性的更多详细信息.
我希望你觉得这可行.期待您的反馈.
内容总结
以上是互联网集市为您收集整理的c#-删除所有一对多的关联项目-Telerik OpenAccess ORM全部内容,希望文章能够帮你解决c#-删除所有一对多的关联项目-Telerik OpenAccess ORM所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。