【问题标题】:NHibernate References Dont' save Foreign KeyNHibernate 引用不要'保存外键
【发布时间】:2011-10-13 13:40:19
【问题描述】:

我有 2 个相互引用的类。我们的 CRM 需要这种奇怪的情况。

我有一个组织和 EmAddress 表和类。组织继承自订阅者,订阅者也有一个表。我认为这可能是我的问题,或者我无法在这些上设置 Inverse 因为没有“HasMany”...

插入/更新的顺序是.. 插入电子邮件 插入组织 更新电子邮件以设置 Email.Subscriber

Email.Subscriber 必须是“NOT NULL”,所以这不起作用。如何更改顺序,我不能使用 Inverse,因为没有列表。只有 2 个参考。

    public class Organization : Subscriber
    {
       public override string Class { get { return "Organization"; } }
       EmAddress PrimaryEmailAddress {get;set;}
    }

    public class OrganizationMap : SubclassMap<Organization>
    {        
      public OrganizationMap()
      {
        Table("Organization");
        KeyColumn("Organization");
        References(x => x.PrimaryEmail,"PrimaryEmailAddress").Cascade.SaveUpdate();
      }
    }

    public EmAddressMap()
    {
        Id(x => x.Id, "EmAddress");
        Map(x => x.EmailAddress, "eMailAddress");
        References<Subscriber>(x => x.Subscriber,"Subscriber").LazyLoad().Fetch.Select().Not.Nullable(); 
        /*not.nullable() throw s error.  NHibernate INSERTS email, INSERTS org, UPDATES email. */
   }

   public class EmAddress
   {
    public virtual Guid Id { get; set; }
    public virtual string EmailAddress { get; set; }
    public virtual Subscriber Subscriber { get; set; }
   }

     //Implementation
     var session = NHIbernateHelper.GetSession();
     using(var tx = session.BeginTransaction())
{
     var org = new Organization();
     org.PrimaryEmail = new EmAddress(){Subscriber = org};
     session.Save(org);
     tx.commit();

}

【问题讨论】:

    标签: c# nhibernate fluent-nhibernate nhibernate-mapping


    【解决方案1】:

    这篇文章可能会有所帮助: http://ayende.com/blog/3960/nhibernate-mapping-one-to-one

    只有一侧使用多对一(Fluent:“References”),另一侧使用一对一(Fluent:“HasOne”)。

    【讨论】:

    • Thyanks,我以前看过那个帖子,但认为它不适用于这里。位于此数据库之上的 CRM 具有一些业务规则,导致我们的数据库架构与假设的不同。
    猜你喜欢
    • 1970-01-01
    • 2019-11-06
    • 2010-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多