我正在使用 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 可以开箱即用吗?
干杯。