私たちは、C# 4 と SQL Server 2008 R2 を使用して、ドメイン駆動型の設計原則に従ってシステムを開発しています。ORM は使用されません。次のような別のエンティティのコレクションを保持するエンティティがある状況があります。
public class Project
{
public IdCollection ParticipantUsers
{
get
{
//...
}
}
public void AddParticipantUser(Id idUser)
{
//...
}
public void RemoveParticipantUser(Id idUser)
{
//...
}
}
のParticipantUsers
プロパティはProject
、それに参加しているユーザーの ID のコレクションを返します。AddParticipantUser
およびメソッドはRemoveParticipantUser
、わかります。
見つかった問題は次のとおりです。プロジェクト インスタンスがリポジトリに送信されてデータベース上で更新されると、ParticipantUsers
ID のコレクションが最後に取得されたときから変更されている可能性があります。一部の ID は追加され、一部は削除され、一部は正確に変更されている可能性があります。同じ。力ずくのアプローチを使用して、このプロジェクトのすべての参加ユーザーをデータベースから削除してから、現在のユーザーを再挿入することができますが、より良いアプローチを検討したいと思います。
追加された ID のみを挿入し、削除された ID を削除し、コレクションにまだ残っている ID をそのままにしておくことができる、より良いアプローチを考えてみてください。