【发布时间】:2012-08-19 13:03:45
【问题描述】:
我正在使用 Nhibernate,它是按代码映射的风格,可以使用复合键列表检索一组记录。我正在使用这样的复合键:
public class PersonAccountKey : IKey
{
public virtual string PersonId { get; set; }
public virtual string AccountNo{ get; set; }
public override bool Equals(object obj)
{
if (obj == null)
return false;
var t = obj as PersonKey;
if (t == null)
return false;
if (PersonId == t.PersonId && AccountNo == t.AccountNo)
return true;
return false;
}
public override int GetHashCode()
{
return (PersonId).GetHashCode() + "|" + (AccountNo).GetHashCode();
}
}
使用 PersonAccountKey 对象列表,我试图让 NHibernate 将单个查询发送到数据库。我想查询会是这样的:
Select PersonId, AccountNo, AccountNickName
From PersonAccount
Where (PersonId = '11' and AccountNo = '10001111')
or (PersonId = '22' and AccountNo = '10001150')
我不确定如何做到这一点?我尝试将 Criteria 与复合键一起使用,但我认为它不应该一起使用。我现在正在尝试 Linq 2 NHibernate,但也没有真正取得任何进展。
理想情况下,我想要一种方法,可以采用 IEnumerable 键,例如 Session.Get<T>(IEnumerable<object>),但我的搜索中不存在这种方法。
NHibernate 是否可以开箱即用?
干杯。
【问题讨论】: