نوع قوي عاد JSON باستخدام monorail
-
16-09-2019 - |
سؤال
أنا أدعو الطريقة التالية في جهاز التحكم الخاص بي باستخدام $ .getjson ()
[return: JSONReturnBinder]
public object ProfileFields()
{
var userfields = _profileSvc.GetFields(282);
var fields = from f in userfields
select new {f.ID, f.FieldName};
return fields;
}
تعود My _Profilesvc إلى بيانات إضافية لا أحتاج إليها (في الواقع أحصل على أخطاء أحذية لأن الجلسة مغلقة).
هل هناك طريقة أفضل للقيام بماذا أقوم به؟ هل يجب علي كتابة البيانات التي أعود بها أو أن هذا النهج كافيا؟
شكرًا.
المحلول
أود استخدام الإسقاط (SetProjection()
) و SetResultTransformer()
إلى نوع قوي النتيجة إلى DTO.
يرى:
- http://www.nhforge.org/doc/nh/en/index.html#queryceria-projection.
- http://www.junasoftware.com/blog/nibernate-setresulttransformer-and-dto.aspx.
- http://ayende.com/blog/archive/2007/08/30/slicing-splication-queries-with-nibernate.aspx.
- http://devlicio.us/blogs/derik_whittaker/archive/2009/05/27/nibernate-amp-SetProjects-SetProjects-w-w-potha.aspx.
نصائح أخرى
هل حاولت بالفعل استخدام
[return: JSONReturnBinder(Properties = "ID,FieldName")]
public object ProfileFields()
{
var userfields = _profileSvc.GetFields(282);
return userfields;
}
آمل أن يساعد هذا.
أولا، أود أن أغير قيمة الإرجاع للعمل ليكون إيليست ...
أعتقد أن هذه الجلسة مغلقة خطأ قد تنبع من التنفيذ المتأخر ل "حقول فار". إذا قمت بتغيير عبارة عودتك إلى الحقول .التوليست ()، والتي ستجبر تنفيذ تعبير LambDA وقد تتخلص من خطأ الجلسة:
[return: JSONReturnBinder]
public object ProfileFields()
{
var userfields = _profileSvc.GetFields(282);
var fields = from f in userfields
select new {f.ID, f.FieldName};
return fields.ToList();
}
لا تنتمي إلى StackOverflow