Я пытаюсь обновить проект и использовать компоновщик кода для сборки.
У меня есть 2 объекта:
public class Person {
public virtual int Id { get; set; }
public virtual User User { get; set; }
}
public class User {
public virtual int Id { get; set; }
public virtual User Person { get; set; }
}
Структура базы данных выглядит следующим образом:
table: users, fields: id
table: people, fields: id, userId
С FluentNHibernate я мог бы отобразить это так:
public class UserMap : ClassMap<User> {
public UserMap() {
Id(x => x.Id).GeneratedBy.Identity();
HasOne(x => x.Person).PropertyRef("User").Not.LazyLoad();
}
}
public class PersonMap : ClassMap<Person> {
public PersonMap() {
Id(x => x.Id).GeneratedBy.Identity();
References(x => x.User).Column("UserId").Not.Nullable().Not.LazyLoad();
}
}
Но я не могу заставить его работать со сборкой кода в NH 3.2.Это то, что я сделал до сих пор.
OneToOne(x=>x.Person, m => {
m.PropertyReference(typeof(Person).GetProperty("User"));
});
OneToOne(x=>x.User, m => {});
Теперь отношение отображается на User.Id и Person.Id, но personid и userid могут отличаться.Также возможно, что у пользователя нет человека.
from Users user0_ left outer join People person1_ on user0_.Id=person1_.Id
Я думаю, что мне нужно указать, что Person -> Пользователь сопоставлен со столбцом UserId, но как?.