如何将子对象添加到父集合,同时保持域模型的完整性,而不发出select
获取父对象的语句?
我有以下模型:
public class Post
{
private readonly IList<Comment> _comments = new List<Comment>();
public virtual IList<Comment> Comments { get { return _comments; } }
public virtual void AddComment(string text)
{
var comment = new Comment
{
Post = this,
Text = text
};
_comments.Add(comment);
}
}
public class Comment
{
public virtual int Id { get; set; }
public virtual Post Post { get; set; }
public virtual string Text { get; set; }
}
这是我目前正在做的事情:
var post = session.Load<Post>(1);
post.AddComment("Test comment.");
transaction.Commit();
这种方法的问题是,当我调用AddComment()
代理Post
NHibernate 时会加载整个帖子,从而针对数据库发出 select 语句。我想_comments
通过总是打电话AddComment()
来添加评论来保护列表。
是否可以在不查询父级的情况下保持我的域模型的完整性并将子级添加到父级?