【发布时间】:2011-03-01 07:51:27
【问题描述】:
我有两个与以下类相关的表(tbArea、tbPost)。
class Area
{
int ID
string Name
...
}
class Post
{
int ID
string Title
Area Area
...
}
这两个类映射到 Fluent Nhibernate。下面是贴图。
public class PostMapping : ClassMap<Post>
{
public PostMapping()
{
Cache.NonStrictReadWrite();
this.Table("tbPost");
Id(x => x.ID)
.Column("PostID")
.GeneratedBy
.Identity();
References(x => x.Area)
.ForeignKey("AreaID")
.Column("AreaID");
...
}
}
每当我对 Post 表“where AreaID = 1(any AreaId)”执行查询时,nhibernate 都会加入 area 表。
(Nhibernate 为查询生成的内容)
SELECT
post fields
, area fields (automatically added)
FROM tbPost p
LEFT JOIN tbArea a on
p.areaid = a.areaid
where
p.areaid = 1
我已尝试将 Area 设置为 LazyLoad、Fetch.Select、ReadOnly 以及引用上的任何其他设置,但它仍将始终加入 Area。
我正在尝试优化后端数据库查询,并且由于我不需要加载刚刚过滤的区域对象,因此我想在每次查询发布时消除对区域的不必要连接。
我需要更改哪些配置或映射以使区域仍然与我的对象中的帖子相关,但在我过滤 AreaID 时不查询它?
【问题讨论】:
-
它可能不是重复的,但它可能会对您有所帮助:stackoverflow.com/questions/476405/…
-
你能把代码贴在你发出查询的地方吗?
标签: nhibernate fluent-nhibernate nhibernate-mapping