【问题标题】:Fluent Nhibernate will not saveFluent Nhibernate 不会保存
【发布时间】:2012-08-08 07:05:42
【问题描述】:

我有以下课程:

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. 电话型号 “FAMILY_ID”列
  2. 支持的型号 “VALUE”、“PHONE_MODEL_ID”列

问题是当我添加值时,它不会将其保存到 SUPPORTEDMODELS 表中:

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

【问题讨论】:

  • 为了理解这个问题,“SupportModels”、“SuppoertedModel”、“SUPPORTEDMODULS”和“SUPPORTEDMODELS”应该引用同一个表,对吧?
  • 是的,我不想输入真实姓名:)

标签: nhibernate fluent-nhibernate nhibernate-mapping fluent fluent-nhibernate-mapping


【解决方案1】:
  • 你不见了HasMany(x =&gt; x.Values).Cascade.AllDeleteOrphan()
  • 可能是测试代码中缺少 session.Flush() 或 transaction.Commit()

顺便说一句:如果Values 的顺序不重要,则将其更改为ICollection&lt;string&gt;HasMany().AsSet(),因为这允许NH 优化某些东西并且代码不能依赖使用sql 时不可靠的顺序.

【讨论】:

    猜你喜欢
    • 2012-05-05
    • 1970-01-01
    • 2010-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-11
    相关资源
    最近更新 更多