class Feed : Entity {
public Guid Id {get;set;}
public string FeedText {get;set;}
public ISet<FeedUser> FeedUsers {get;set;}
public void AddFeedUser(User user) {
FeedUsers.Add(user.Id);
}
public void RemoveFeedUser(User user) {
FeedUsers.Remove(user.Id);
}
public void MarkUserAsReadFeed(User user)
{
var feedUser = FeedUsers.Find(u=>u.Id == user.Id);
feedUser.Read();
}
}
class FeedUser : ValueObject {
public Guid UserId {get;private set;}
public bool IsRead {get;private set;}
public DateTime? ReadDate=null {get;private set;}
public void Read(){
IsRead = true;
}
public void UnRead(){
IsRead = false;
}
}
この場合、FeedUser は値オブジェクトですか、それともエンティティですか? FeedUser は ID を必要としないが、100% 不変ではない (IsRead プロパティは変更可能) ため、混乱しています。
Feed には多数の FeedUser があります。NHibernate では、新しい FeedUser を追加したり、リストから削除したりするために、すべての FeedUsers プロパティ (遅延ロードまたは Eager ロード) をロードする必要がありますか?