سؤال

وأنا أحاول أن أداء ما أستطيع أن أصف فقط كإصدار عكس IN () باستخدام معايير Nhibernate ..

وبدلا من القول القيمة المخزنة في خاصية في قائمة / جمع X

وأنا أريد أن أقول، هذا X قيمة (معرف) هو في القائمة وهو خاصية للكائن.

وأي عن تقديره للمساعدة، يمكن أن أحاول شرح أفضل إذا كان هذا لا معنى له.

تحرير الاعتذار للناس، وأنا أفهم هذا لا معنى له ما يكفي ...

ولدي بند حدث في نظام بلدي التي يمكن أن يكون لها قائمة من الجمهور (البنود) التي ينطبق عليها ذلك. إذا المشرف يريد حذف عنصر الجمهور أريد للتأكد من أن هذا البند لا المشار إليه من قبل أي أحداث. (يتم تخزين AudienceList كقائمة سلسلة من معرفات للجمهور).

كان

وماذا كنت أفكر شيئا على غرار:

والنتائج فار = SessionInstance.Session.CreateCriteria (تشير typeof (EventItem.Items.EventItem)). إضافة (Restrictions.In ( "AudienceList"، myAudience.ID)) .List ()؛

ولكن أنا في حاجة إلى AudienceList وmyAudience.ID أن يكون على العكس من ذلك لا استطيع؟ لدي ID الجمهور ولكن تحتاج إلى التحقق من أنه قد يكون في قائمة هويات أخرى.

وشكرا مرة أخرى.

تحرير 2

وتعريف من EventItem هو أن هذه واحدة من انها هي DetailCollection معرفات الجمهور، يتم حفظها إلى DB كقائمة سلسلة من معرفات خصائص.

هل كانت مفيدة؟

المحلول

وتحرير:. ملغى جوابي السابقة

حسنا، يبدو وكأنه ليس هناك نموذج العلائقي صحيح هنا حتى الأمور لن تكون جميلة كما. دون مفاتيح خارجية، وما شابه ذلك، وأنا لست على يقين من أن يكون NHibernate تستخدم كثيرا في هذا الموقف (على الأقل لتوليد استعلام لطيفة).

إذا يتم تخزين كل من معرفات الجمهور لسجل الحدث واحد في حقل واحد، عليك إما أن استخدام مثل SQL أو يفعل ذلك في التعليمات البرمجية. جلب كل EventItems وأعاد من خلالها، والتحقق من مجموعات AudienceList من أجل ID كنت تبحث عنه. إذا كنت السير في هذا الطريق، فإنه قد يكون من الأفضل لخلق 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