문제

나는 nhibernate 기준을 사용하여 in ()의 역 버전으로 만 묘사 할 수있는 것을 수행하려고 노력하고 있습니다.

속성에 저장된 가치가 목록/컬렉션 x에 있다고 말하는 대신

말하고 싶습니다.이 값 x (ID)는 객체의 속성 인 목록에 있습니다.

어떤 도움을 주었을 때, 나는 이것이 말이되지 않으면 더 잘 설명 할 수 있습니다.

편집하다 사람들에게 사과드립니다. 내가 이해하기에 충분히 의미가 없습니다 ...

내 시스템에 이벤트 항목이있어 적용되는 잠재 고객 (항목) 목록이 있습니다. 관리자가 잠재 고객 항목을 삭제하려면 항목이 어떤 이벤트에서도 참조되지 않은지 확인하고 싶습니다. (Audiencelist는 청중을위한 ID 문자열 목록으로 저장됩니다).

내가 생각했던 것은 다음의 선을 따라 무언가였습니다.

var results = sessionInstance.session.createCriteria (typeof (eventItem.Items.eventItem)) .add (extrictions.in ( "audiencelist", myaudience.id)) .list ();

그러나 나는 Audiencelist와 Myaudience가 필요합니다. 청중 ID가 있지만 다른 ID 목록에있을 수 있는지 확인해야합니다.

다시 한 번 감사드립니다.

편집 2

이벤트의 정의는 속성 중 하나가 Audience ID의 세부 사항을 수집하는 것입니다. DB에 ID의 문자열 목록으로 저장됩니다.

도움이 되었습니까?

해결책

편집 : 이전 답변을 폐기했습니다.

글쎄, 여기에는 진정한 관계형 모델이 없으므로 상황이 예쁘지 않을 것 같습니다. 외국 열쇠 등이 없으면 Nhibernate 가이 상황에서 많은 쿼리를 생성하는 데 많이 사용될 것이라고 확신하지 않습니다.

단일 이벤트 레코드의 모든 청중 ID가 단일 필드에 저장되면 SQL과 같은 SQL을 사용하거나 코드로 수행해야합니다. 모든 이벤트를 가져 와서 반복하여 원하는 신분증에 대한 오디오 셀리스트 컬렉션을 확인하십시오. 해당 경로로 이동하면 이동하는 데이터의 양을 최소화하기 위해 DTO를 작성하는 것이 가장 좋습니다. 같은 것

session.CreateQuery("select new AudienceListDTO(e.AudienceList) from EventItems e").List();

그것은 당신이 사용자에게 "이 청중 유형이 여전히 사용 중이며"특정 인스턴스를 지적하지 않음을 알려야한다고 가정합니다. 그렇지 않으면 더 많은 데이터를 추가해야합니다.

다른 팁

이렇게 의미합니까?

class YourClass {
    List<int> theList;
}

IQueryable<YourClass> query = ...;
var result = from c in query where c.theList.Contains(value);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top