我正在使用带有SQL Server的NPoco,并且有一个包含集合属性的父对象。这一切都可以使用FetchOneToMany加载。
我想保存父对象和子集合。将父级传递给Update()或Insert()不会更改子集合的DB。我是否必须手动迭代子集合并删除/插入/更新每个项目?
我不介意手动这样做;我有一个事务中的代码,但它删除集合中的所有对象,并重新添加新的,这似乎有点狡猾。
所以,我真的需要问一下,如果有更好的方法,我可能会失踪。
谢谢。
答案 0 :(得分:1)
是的,你必须手动完成。
为了避免删除然后插入,您必须在UI中保留项目ID(我总是有一个自动增量主键)并将它们发布到后端,以便您可以更新,插入或删除。
我使用ASP.net MVC,在那里我保留了一个带有ID的隐藏字段的所有项目的列表。在我的用户界面中,删除项目的唯一方法是清除所有字段,但隐藏的ID仍然存在,所以稍后我可以删除数据库中的项目。 对于插入/更新,它很简单,因为您只需要检查ID是否为空。