0

私は次のクラスを持っています:

public class PhoneModel
{
     public virtual ModelIdentifier SupportModels
}
public class ModelIdentifier
{
     public virtual string Name
     public virtual IList<string> Values
}

これは私がそれをマッピングした方法です:

      mapping.Component(x => x.SuppoertedModel, y =>
      {
        y.Map(x => x.Name, "FAMILY_ID");
        y.HasMany(x => x.Values).Element("VALUE").Table("SUPPORTEDMODULS")
      }

2 つのテーブルが作成されました。

  1. PhoneModel 列「FAMILY_ID」
  2. SUPPORTEDMODELS列「VALUE」、「PHONE_MODEL_ID」

問題は、値を追加するときに、それが SUPPORTEDMODELS テーブルに保存されないことです。

var pm = new PhoneModel();
pm.SupportedModels.Name = "11"
pm.SupportedModels.Values.Add("34");
4

1 に答える 1

0
  • あなたが行方不明ですHasMany(x => x.Values).Cascade.AllDeleteOrphan()
  • テスト コードに session.Flush() または transaction.Commit() がない可能性があります

ところで:の順序がValues重要でない場合は、に変更します。これにより、NH がいくつかのものを最適化できるようにICollection<string>なりHasMany().AsSet()、SQL を使用するときに信頼できない順序にコードを依存させることができなくなります。

于 2012-08-14T07:24:28.103 に答える