【发布时间】:2013-08-09 22:32:00
【问题描述】:
如何在不发出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();
这种方法的问题是,当我在Post 代理上调用AddComment() 时,NHibernate 会加载整个帖子,从而针对数据库发出选择语句。我想通过始终调用 AddComment() 来添加 cmets 来保护 _comments 列表。
是否可以保持我的域模型的完整性并将子级添加到父级而不查询父级?
【问题讨论】:
标签: nhibernate