首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >fluent-nhibernate HasOne关系返回NULL

fluent-nhibernate HasOne关系返回NULL
EN

Stack Overflow用户
提问于 2012-01-30 17:25:16
回答 2查看 1K关注 0票数 0

在fluent nhibernate中,我在表示我想要的结果时遇到了一些困难。也许我只是在这样一个简单的概念上采取了错误的方法。

人民实体是从第三方服务中来的。稍后可以生成一个帐户(凭据以及将用作api密钥的guid )。用户将只有一组凭据,并且每个用户的凭据都是唯一的。

在web应用程序管理区域内,需要列出People实体的一些属性以及它们的UserName。

最终,当查询所有人员实体时,Account总是为空。

  • 这是HasOne?

的错误用法吗?

本质上,我想要的基本上是执行一个左外部联接。

代码语言:javascript
复制
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测试时,表将如我所期望的那样生成:

代码语言:javascript
复制
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
    )

我是不是做错了什么事?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-31 06:06:38

事实证明,我的映射对于我想要完成的任务是正确的,但是已经打开了一个无状态会话,这最终是我的问题的来源。

票数 1
EN

Stack Overflow用户

发布于 2012-01-30 18:42:34

似乎您需要在人员和帐户HasOne实现中使用ClassMap。您目前将帐户显示为References用户,而不是相反。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9068002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档