2016-02-15 41 views
1

我在SQL Server中使用NPoco,并拥有一个包含集合属性的父对象。这一切使用FetchOneToMany加载罚款。PetaPoco/NPoco - 保存具有(子)收集属性的对象

我想保存父对象和子集合。将父项传递给Update()或Insert()不会更改子集合的数据库。我是否必须手动迭代子集合并根据需要删除/插入/更新每个项目?

我不介意手动做;我有一个事务中的代码,但是它删除了集合中的所有对象,并重新添加了新的对象,这似乎有点不妥。

所以,我真的需要问,以防万一有更好的办法,我可能会失踪。

谢谢。

回答

1

是的,你必须手动完成。

为了避免删除,然后插入你必须保持UI中的项目ID(我总是有一个自动增量主键),并将它们发布到后端,以便更新,插入或删除。

我使用ASP.net MVC,在那里我保留了一个带ID的隐藏字段的所有项目的列表。在我的用户界面中,删除项目的唯一方法是清除所有字段,但隐藏的ID仍然存在,所以稍后我可以删除数据库中的项目。 对于插入/更新很容易,因为您只需检查ID是否为空。

+1

感谢您确认我的方法。对于删除,我写了一个方法,比较原始集合和新集合(提交保存),并删除任何区别。 – markau