我在FluentNHibernate映射中使用Where子句,如下所示:
public class FooMap : ClassMap<Foo>
{
public FooMap()
{
Table("MySchema.Foos");
Where("Deleted = 0");
etc etc
}
}
当我通过session.Load<Foo>(1)
加载单个Foo实例时以及当我使用LINQ查询时,此where子句会附加到SQL。但是,如果另一个类有一个Foos集合并且我遍历集合,则生成的用于加载Foos的SQL不包含where子句。
这是FluentNHibernate中的错误,还是一般的NHibernate?或者我做错了什么?或者是(颤抖)一个'特征'?
答案 0 :(得分:0)
这是事实,我不知道这是一个错误,一个功能,还是一个缺少的功能。我遇到了遗留数据库的同样问题,尽管我的关系是多对一的(“神”查找表)。
我认为理由是,一旦建立了外键关系,那么where子句就没有意义了。对于软删除表,请考虑使用过滤器或(我的首选项)映射到过滤已删除记录的视图,假设它们不需要出现在UI中。