我有一个实体客户
public class Customer
{
public virtual int ID { get; set; }
public virtual string Firstname { get; set; }
public virtual string Lastname { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的DAL方法是:
public IList<Customer> GetCustomers(Customer example)
{
var customers = default(IList<Customer>);
using (var sessiong = GetSession())
{
customers = sessiong.CreateCriteria(typeof(Customer))
.Add(Example.Create(example))
.List<Customer>();
}
return customers;
}
Run Code Online (Sandbox Code Playgroud)
但问题是,当我这样调用我的方法时
var exemple = new Customer() { ID = 2 };
var customers = provider.GetCustomers(exemple);
Run Code Online (Sandbox Code Playgroud)
我拥有数据库中所有客户的集合,因为NHibernate生成以下SQL查询
NHibernate: SELECT this_.CustomerId as CustomerId0_0_, this_.Firstname as Firstname0_0_, this_.Lastname as Lastname0_0_ FROM Customers this_ WHERE (1=1)
Run Code Online (Sandbox Code Playgroud)
NHibernate支持主键上的QBE?我究竟做错了什么 ?
PS我忘了提到我正在使用的NHibernate版本.这是2.0.1.GA.
zih*_*tki 11
"通过示例使用查询时将忽略ID.这样做是因为具有id设置的示例对象无论如何都只返回一个对象." - http://forum.hibernate.org/viewtopic.php?t=927063和http://forum.hibernate.org/viewtopic.php?p=2351666&sid=c22d2c37f8d67e268b6ffe547f57ad9e
这是针对Hibernate的.NHibernate从它移植过来.所以我确信这也是NHibernate的设计.所以在id上使用Get代替QBE.
归档时间: |
|
查看次数: |
3213 次 |
最近记录: |