流畅的映射问题 - 为财产提供一定的价值

时间:2010-02-08 21:00:33

标签: nhibernate

考虑以下两个类:

public class TypeAGood{
  public virtual int Id{get;set;}
  public virtual string Description{get;set;}
  public virtual Type Type{get;set;}  
}

public virtual class Type{
  public virtual int Id{get;set;}
  public virtual string Name{get;set;}
}

映射:

 public class TypeMap : ClassMap<Type>
    {
        public TypeMap()
        {
            Table("Type");
            Id(x => x.Id);
            Map(x => x.Name);
        }
    }

 public class TypeAGoodMap : ClassMap<TypeAGood>
 {
        public TypeAGoodMap()
        {
            Table("Good");
            Id(x => x.Id);
            Map(x => x.Description);
            References(x => x.Type)
               .Fetch.Join()
               .Column("TypeId")
               .ForeignKey("Id");
        }
 }

类型可以有不同的值,如a,b,c。
如何将TypeAGoodMap更改为仅映射具有类型a的商品?
谢谢,

1 个答案:

答案 0 :(得分:0)

听起来你正在寻找一个描述here的过滤器。不幸的是,FluentNhibernate还不支持。但这就是hbm中的样子:

<filter name="typeAfilter" condition=":typeA = TypeId"/>

然后在查询中执行以下操作:

ISession session = ...;
session.EnableFilter("typeAfilter").SetParameter("typeA ", "a");
IList<TypeAGood> results = session.CreateCriteria(typeof(TypeAGood))
         .List<TypeAGood>();