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不重要,那么将其更改为ICollection<string>andHasMany().AsSet()因为这允许 NH 优化某些东西并且代码不能依赖于使用 sql 时不可靠的顺序。

于 2012-08-14T07:24:28.103 回答