NHibernate 未获取连接

发布于 2024-10-13 18:44:08 字数 648 浏览 1 评论 0原文

我有一个在两个表中定义的实体,使用 Fluent NHibernate

Table one:
Employee
---------
Id,
Name

Table Two:
Salaries
--------
Employee_Id,
Salary

在 Fluent NHibernate 上,我将其定义如下:

EmployeeMap : ClassMap<Employee>
{
public EmployeeMap()
{
   Table("Employee");
   Map(x => x.Id);
   Map (x => x.Name);
   Join ("Salaried", m =>
   {
      m.Map (x => map.Salary);
      m.KeyColumn("EmployeeId");
    });
}
}

当我执行 Session.Get 时,如下所示:

Employee e = session.Get<Employee>(employeeId);

然后我获得了 Employee 的所有详细信息,除了来自“Salaries”的列“表

有什么想法吗?

I have an entity that is defined in two tables with fluent nhibernate

Table one:
Employee
---------
Id,
Name

Table Two:
Salaries
--------
Employee_Id,
Salary

On Fluent NHibernate I defined it like this:

EmployeeMap : ClassMap<Employee>
{
public EmployeeMap()
{
   Table("Employee");
   Map(x => x.Id);
   Map (x => x.Name);
   Join ("Salaried", m =>
   {
      m.Map (x => map.Salary);
      m.KeyColumn("EmployeeId");
    });
}
}

When I do a Session.Get like the following:

Employee e = session.Get<Employee>(employeeId);

Then I got all the details of Employee, except the columns coming from the "Salaries" table

Any idea?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

一个人练习一个人 2024-10-20 18:44:08

我建议您使用 HasOne 方法,如下所示:

EmployeeMap : ClassMap<Employee>
{
     public EmployeeMap()
     {
       Table("Employee");
       Map(x => x.Id);
       Map (x => x.Name);
       HasOne(x=>x.Salary).PropertyRef(r=>r.EmployeeId);
    }

}

I'd suggest that you use the HasOne method like so:

EmployeeMap : ClassMap<Employee>
{
     public EmployeeMap()
     {
       Table("Employee");
       Map(x => x.Id);
       Map (x => x.Name);
       HasOne(x=>x.Salary).PropertyRef(r=>r.EmployeeId);
    }

}

鸵鸟症 2024-10-20 18:44:08

Employee 是延迟加载的,因此 NHibernate 仅在您访问 Salary 属性时才会调用数据库。

The Employee is being lazy loaded so NHibernate will only call out to the database if you access the Salary property.

慢慢从新开始 2024-10-20 18:44:08

连接映射。应该是:

Join("薪水", m =>
{
m.Map(x =>map.Salary);
m.KeyColumn("Employee_Id");
});

The table and KeyColumn names are wrong in the join mapping. Should be:

Join ("Salaries", m =>
{
m.Map (x => map.Salary);
m.KeyColumn("Employee_Id");
});

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文