NOt*_*Dev 5 nhibernate performance one-to-many
我有简单Parent- Child关系,Parent有很多Child的对象,关系是单向的:
public class Parent
{
public virtual int Id { get; protected set; }
public virtual string Name { get; set; }
public virtual IList<Child> Children { get; set; }
}
public class Child
{
public virtual int Id { get; protected set; }
public virtual string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
映射关系集级联以AllDeleteOrphan删除Child不再引用的对象Parent:
HasMany(x => x.Children).Cascade.AllDeleteOrphan();
Run Code Online (Sandbox Code Playgroud)
现在我正在清除Child对象列表:
var parent = session.Get<Parent>(1);
parent.Children.Clear();
session.Update(parent);
Run Code Online (Sandbox Code Playgroud)
NHibernate Child按预期删除对象,但它通过从集合中为每个对象发送单独的DELETE查询来执行此操作Child:DELETE FROM Child WHERE Id = ...- 这可能意味着很多查询.
无论如何,它可以很容易地使用单查询做喜欢DELETE FROM Child WHERE ParentId = 1.为什么NHibernate没有使用父外键来清除集合?它似乎知道一切准备这样的查询(哪个外键,什么值等)?