0

私はNHberinateに比較的慣れていないので、EFの代わりにNHberinateを使用しています。これは、Monoでうまく機能するためです。

すべてのエンティティはAutoMappingでマッピングされます。

問題は、1対多の関係を設定していることです。Itemクラスの1つにlocalizedTextクラスがあります。また、Cascadeallのコンベンションを設定しました。

 public class CascadeAll : IHasOneConvention, IHasManyConvention, IReferenceConvention
 {
    public void Apply(IOneToOneInstance instance)
    {
        instance.Cascade.All();
    }

    public void Apply(IOneToManyCollectionInstance instance)
    {
        instance.Cascade.All();

    }

    public void Apply(IManyToOneInstance instance)
    {
        instance.Cascade.All();
    }
}

LocalizedTextをItemクラスに追加すると、それはうまく機能し、localizedTextテーブルはテーブルに書き込まれた値を取得しますが、外部キー値「itemId」はnullのままです。ローカライズされたTextアイテムが追加されたときにobjectIdを持つようにするにはどうすればよいですか?

ザック

4

1 に答える 1

0

自分の質問に対する答えを見つけたときは素晴らしいです。

特にリレーションシップを持つオブジェクトで正しい SQL を実行するには、オブジェクトを保存するためのコードを次のメソッド呼び出しの間に配置する必要があります。begintransaction() および commitTransaction()。commitTransaction が呼び出された場合にのみ、すべての値がデータベースに書き込まれます。値のないフィールドであっても、以前の場合の null の代わりにゼロが自動的に割り当てられます。

于 2011-05-01T09:59:53.483 に答える