这里有一百万个关于一对二的问题,但我还没有看到任何帮助我。
我有一个实体,它有一个子实体。我们称之为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不在对象上。