FluentNhibernate,无法保存父节点而不创建子节点

时间:2014-09-11 18:28:22

标签: nhibernate fluent-nhibernate mapping one-to-one

这里有一百万个关于一对二的问题,但我还没有看到任何帮助我。

我有一个实体,它有一个子实体。我们称之为Person,只有一个地址。这基本上是一对一的,但地址没有PersonId。这个人确实是一个AddressId。

所以

public class Person
{
   public virtual blah blah {get;set;}
   public virtual Address Address {get;set;}
}

public class Address
{
  public virtual string address{get;set;}
  -- more address stuff, no Person reference
}

同样,地址在表格中没有PersonId

问题是,如果人员没有和地址(我想无家可归)并保存新人,它仍会在数据库中创建一个空地址记录。

我尝试了各种映射方式,每个映射都会在地址表中创建一条记录。

public class ProfileMap : IAutoMappingOverride<Profile>
{
    public void Override(AutoMapping<Profile> mapping)
    {
        mapping.Map(x => x.ProfileStatusCode);
        mapping.Map(x => x.PurchaseStatusCode);
        mapping.Map(x => x.ClaimedStatusCode);
        mapping.Map(x => x.QualityTierCode);
        mapping.HasManyToMany(x => x.Designers).ExtraLazyLoad();
        ******
        mapping.References(x => x.ProfileAddress).Not.LazyLoad().Fetch.Join().Cascade.SaveUpdate();
        ******
        mapping.ApplyFilter<ProfileStatusCodeFilter>("ProfileStatusCode != :ProfileStatusCode");
    }
}

这是第一次尝试,但我也尝试了

mapping.References(x => x.ProfileAddress).Nullable().NotFound.Ignore().Cascade.SaveUpdate();

我还尝试在ProfileAddress表中添加一个id并将其映射回来。至于创建它是一个相当长的过程的一部分,但足以说我在保存之前检查了配置文件并且ProfileAddress不在对象上。

0 个答案:

没有答案