بناء استعلام ضد iusertype في nhibernate
-
23-09-2019 - |
سؤال
كيف يمكنني بناء استعلام ضد حقل 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
.
لا تنتمي إلى StackOverflow