nhibernate联接表值函数

nhibernate联接表值函数,nhibernate,nhibernate-mapping,fluent-nhibernate-mapping,Nhibernate,Nhibernate Mapping,Fluent Nhibernate Mapping,我现在就要发现nhibernate了。因此,我的问题可能非常愚蠢:) 我试图做的(我正在使用一个遗留数据库)是获取一个实体,它的一些数据来自一个表值函数。 我的实体如下 public class Entity { public virtual int Id { get; protected set; } .... public virtual int AccessRightId { get; set; } } 其中AccessRightId来自表值函数(fp_AccessRight

我现在就要发现nhibernate了。因此,我的问题可能非常愚蠢:)

我试图做的(我正在使用一个遗留数据库)是获取一个实体,它的一些数据来自一个表值函数。 我的实体如下

public class Entity
{
  public virtual int Id { get; protected set; }
  ....
  public virtual int AccessRightId { get; set; }
}
其中AccessRightId来自表值函数(fp_AccessRight('userId'))

我有以下映射

public class EntityMap : ClassMap<Entity>
  {
    public EntityMap ()
    {
      this.Id(entity => entity .Id);          
      this.Join(
          "fp_AccessRight('userId')",
            join =>
            {
                join.Fetch.Join();
                join.KeyColumn("EntityId");
                join.Map(t => t.AccessRightId, "AccessRightType");
                join.Table();
            });
    }        
}
公共类EntityMap:ClassMap
{
公共实体映射()
{
this.Id(entity=>entity.Id);
这个,加入(
“fp_AccessRight('userId')”,
加入=>
{
join.Fetch.join();
join.KeyColumn(“EntityId”);
join.Map(t=>t.AccessRightId,“AccessRightType”);
join.Table();
});
}        
}
不幸的是,我不能用任何值替换“userId”。 谢谢 有办法吗?我终于解决了

诀窍是使连接如下所示:

this.Join("fp_ACCOUNT_ACL(:AclFilter.userId)"
然后使用simpley启用过滤器

this.session.EnableFilter("AclFilter").SetParameter("userId", "bdd#5");  

我找到了一个例子。

您可以将其作为答案发布并接受,以便其他人更容易找到它