У меня возникли некоторые трудности с представлением желаемого результата в беглом-гибернации. Возможно, я просто ошибочно отношусь к такой простой концепции.
Объект People заполняется из сторонней службы. Позже можно создать учетную запись (учетные данные вместе с guid, который будет использоваться в качестве ключа API). У пользователя будет только один набор учетных данных, и учетные данные являются уникальными для каждого пользователя.
В области администрирования веб-приложения желательно указать некоторые свойства объекта People вместе с их именем пользователя.
В конечном итоге, при запросе всех сущностей людей, Account
всегда равен NULL.
- Это неправильное использование HasOne?
По сути, я хочу выполнить левое внешнее объединение для учетной записи.
public class Account
{
public virtual Guid Id { get; set; }
public virtual string UserName { get; set; }
public virtual string Password { get; set; }
public virtual People People { get; set; }
}
public class People
{
public virtual int UserID { get; set; }
public virtual string FirstName { get; set; }
public virtual string LastName { get; set; }
public virtual Account Account { get; set; }
...
...
...
}
public class AccountMap: ClassMap<Account>
{
public AccountMap()
{
Table("Account");
LazyLoad();
Id(x => x.Id).GeneratedBy.Assigned().Column("ID");
Map(x => x.UserName).Column("UserName").Not.Nullable().Length(100);
Map(x => x.Password).Column("Password").Not.Nullable().Length(100);
References(x => x.People).Column("People_id");
}
}
public class PeopleMap : ClassMap<People>
{
public PeopleMap()
{
Table("People");
LazyLoad();
Id(x => x.UserID).GeneratedBy.Identity().Column("People_id");
Map(x => x.FirstName).Column("First_Name").Length(50);
Map(x => x.LastName).Column("Last_Name").Length(50);
HasOne(x => x.Account).PropertyRef(r => r.People).Cascade.All();
}
}
При выполнении моих тестов PersistenceSpecification таблицы генерируются так, как я ожидал:
create table Account (
ID UNIQUEIDENTIFIER not null,
UserName TEXT not null,
Password TEXT not null,
People_id INT,
primary key (ID),
constraint FKBE1051AFE1BC1FAE foreign key (People_id) references People
)
Я что-то здесь не так делаю?