【发布时间】:2012-01-30 17:25:16
【问题描述】:
我在 fluent-nhibernate 中表示我想要的结果时遇到了一些困难。也许我只是在这样一个简单的概念上采取了错误的方法。
人员实体由第 3 方服务填充。稍后可以生成一个帐户(凭据以及将用作 api 密钥的 guid)。用户将只有一组凭据,并且每个用户的凭据都是唯一的。
在 Web 应用程序管理区域中,需要列出 People 实体的一些属性及其用户名。
最终在查询所有人实体时,Account 始终为 NULL。
- 这是 HasOne 的错误用法吗?
基本上我想要的是在 Account 上执行左外连接。
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
)
我在这里做错了什么吗?
【问题讨论】:
标签: asp.net-mvc fluent-nhibernate domain-driven-design