我们正在使用 C# 4 和 SQL Server 2008 R2 开发一个系统,并遵循领域驱动设计原则。没有使用 ORM。在某些情况下,我们有一个实体持有另一个实体的集合,例如:
public class Project
{
public IdCollection ParticipantUsers
{
get
{
//...
}
}
public void AddParticipantUser(Id idUser)
{
//...
}
public void RemoveParticipantUser(Id idUser)
{
//...
}
}
Project
的 ParticipantUsers
属性返回参与其中的用户 ID 的集合。 AddParticipantUser
和 RemoveParticipantUser
方法,您明白了。
我们发现的问题如下。当一个项目实例被发送到存储库以在数据库上进行更新时,id 的 ParticipantUsers
集合可能已经从上次检索时发生了变化:一些 id 可能已经被添加,一些可能已经已被删除,有些可能完全相同。我们可以使用蛮力方法从数据库中删除该项目的所有参与用户,然后重新插入当前用户,但我想探索更好的方法。
您能想到什么更好的方法,允许我只插入那些已添加的 ID,删除那些已删除的 ID,并保留那些仍然存在于集合中的 ID?
最佳答案
实际上,我认为删除-重新插入方法比任何基于比较的解决方案都要好。
首先,它易于实现。
其次,它避免了再次获取数据进行比较。
您能否进一步解释为什么不推荐这种方法,也许我没听懂。
关于c# - 更新数据库集合的最佳策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17568292/