Nhibernate를 사용 중이며 복합 키 목록을 사용하여 레코드 집합을 검색하기 위해 코드 별 매핑이 사용됩니다. 나는이 같은 복합 키를 사용하고 있습니다 :단일 쿼리와 복합 키로 레코드 집합을 검색하기 위해 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를 시도하고 있지만 실제로 어느 곳으로도 갈 수 없다.
이상적으로, 나는 그런 Session.Get<T>(IEnumerable<object>)
로 키는 IEnumerable을 할 방법을 싶지만, 이건 내 검색에서 존재하지 않습니다.
NHibernate에서이 기능을 사용할 수 있습니까?
건배.
완벽한 :
여기에 쉬운 해결 방법입니다. 복합 키는 피해야하지만, 기존 데이터베이스를 사용하여 수행 할 수있는 작업은 무엇입니까? –
리팩터링 할 수 있습니다. 예 :-) –