次のマッピングを持つ親コレクションがあるとします。
public class A : Entity<A>
{
private readonly IList<B> _bs = new List<B>();
public virtual string AProp { get; set; }
public A(string aprop)
{
AProp = aprop;
}
protected A()
{
}
public virtual IEnumerable<B> Bs
{
get { return _bs; }
}
public virtual void AddBEntity(B bEntity)
{
bEntity.A = this;
_bs.Add(bEntity);
}
}
public class AMap : EntityMap<A>
{
public AMap()
{
Map(x => x.AProp).Not.Nullable();
HasMany(x => x.Bs)
.Access.ReadOnlyPropertyThroughCamelCaseField(Prefix.Underscore)
.Inverse().Cascade.All().AsBag();
}
}
そして次の子クラスとそのマッピング:
public class B: Entity<B>
{
public virtual string BProp { get; set; }
public virtual A A { get; set; }
}
public class BMap : EntityMap<B>
{
public BMap()
{
Map(x => x.BProp).Not.Nullable();
References(x => x.A).Cascade.All();
}
}
既存の親に子を追加する必要があるとします。既知の子の値と親の ID が適切に配置された SQL への 1 つの挿入が期待されます。マッピングでさまざまなことを試しましたが、NH プロファイラーが示唆するように、子を追加するためにプロキシされた A オブジェクトをロードする理由がわかりません。