Попробуйте это:
public class PersonMap : ClassMap<Person>
{
public PersonMap()
{
Table("Persons");
Id(x =>x.Id, "PersonId").GeneratedBy.Identity();
References(x => x.User).Column("UserId").Cascade.All();
Map(x => x.FirstName, "FirstName");
Map(x => x.LastName, "LastName");
Map(x => x.Address, "Address");
Map(x => x.Phone, "Phone");
// More property maps
}
}
public class UserMap : ClassMap<User>
{
public UserMap()
{
Id(x => x.Id, "UserId").GeneratedBy.Identity();
Map(x => x.Username, "Username");
Map(x => x.Password, "Password");
References<Person>(x => x.PrimaryPerson).ForeignKey("PrimaryPersonId").Cascade.All();
}
}
Предполагается, что ваши идентификаторы являются автоматическими и что при обновлении пользователя вы также хотите, чтобы ваш PrimaryPerson обновлялся вместе с ним. Измените Cascade.All () на Cascade.None (), если это не так. Просто убедитесь, что когда вы это сделаете, вы обновите PrimaryPerson вручную или вы получите «объект ссылается на несохраненный временный экземпляр» на SubmitChanges (), если вы этого не сделаете.