سؤال

كيف يمكنني بناء استعلام ضد حقل IuserType مخصص في Nhibernate؟

بشكل أكثر تحديداً: أنا أعمل على تطبيق براونفيلد. لدي حقل في قاعدة البيانات يسمى "الحالة" التي تحتوي على char التي تمثل ما هو كائن معين.

في الكود الخاص بي ، أريد أن يتم تمثيل هذا على أنه تعداد ، لذا فقد قمت بإنشاء تعداد ذي قيمة لكل ولاية وأنشأت iusertype يتحول من قيمة Char الخاصة بـ DB إلى تعداد بلدي والعودة للاختيار والتحديثات.

أريد بناء استعلام يشبه هذا:

session.CreateCriteria<MyType>().Add(Expression.Eq("State", StateEnum.Complete))

ومع ذلك ، فإن هذا الاستعلام يلقي استثناء:

could not resolve property: State of: MyNamespace.MyType

من المفترض أن Nhibernate لا يعرف كيفية القيام باختيار ضد حقل Char في DB بالنظر إلى نوع Stateenum.

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

المحلول

يجب أن يكون فصلك ورسم الخرائط مثل ما يلي:

class MyType
{
    public virtual StateEnum State { get; set; }
}

<class name="MyType">
    <property name="State" type="MyNamespace.MyEnumUserType, MyDll" />
</class>

يحتوي Nhibernate على 3 مُرتب في التعداد:

  • perfectenumtype خرائط إلى عمود int ، ولا يتم الإعلان عنها في التعيين.
  • enumstringType خرائط لعمود varchar. القيم هي قيم tostring () من التعداد.
  • enumchartype خرائط لعمود char. القيم هي نتيجة (char) (int) enumvalue.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top