سؤال

وأنا أحاول ربط لASP.net دروبدوونليست لنتائج استعلام إطار كيان، في حين لا يزال الحفاظ على الفصل متعدد المستويات. (. أي أنا لا أريد كود UI بلدي لاحتواء طلب البحث، ولا قانون بلدي طبقة البيانات أن يكون تبعيات UI) بلدي الخلفية التعليمات البرمجية في معالج الأحداث Page_Load يبدو مثل هذا:

        IEnumerable<Lookup> TypesLookup = Business.DocumentBO.GetDocumentTypes(_LookupTypeID);
        DocTypeDropDownList.DataSource = TypesLookup;
        DocTypeDropDownList.DataTextField = "Description";
        DocTypeDropDownList.DataValueField = "LookupID";
        DocTypeDropDownList.DataBind();

وبينما يبدو كود البيانات الخاصة بي مثل هذا (هناك طبقة رجال الأعمال المتوسطة أيضا، ولكن هناك أية معالجة يوجد حتى الآن - مجرد المار):

    public static IEnumerable<Lookup> GetLookups(int LookupTypeID)
    {
        using (VLFDocumentEntities context = new VLFDocumentEntities())
        {
            IEnumerable<Lookup> l = (from c in context.Lookup
                        where c.LookupTypeID == LookupTypeID
                        select c);

            return l;
        }
    }

وعندما أحصل على DocTypeDropDownList.DataBind () ؛، أنه يطرح ObjectDisposedException مع الرسالة "DocTypeDropDownList.DataBind ()؛". يمكن لأي شخص أن ينصحني حول أفضل طريقة لمعالجة هذا؟

وشكرا،   أندي

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

المحلول

ولا يكون لديك لفصل الأشياء عن السياق؟ منها مثلا:

IEnumerable<Lookup> l = (from c in context.Lookup
                        where c.LookupTypeID == LookupTypeID
                        select c);
foreach (Lookup lookup in l)
  context.Detach(lookup);
return l;

نصائح أخرى

لماذا لا مجرد استخدام قائمة <>؟

public static List<Lookup> GetLookups(int LookupTypeID)
{
    using (VLFDocumentEntities context = new VLFDocumentEntities())
    {
        return (from c in context.Lookup
                    where c.LookupTypeID == LookupTypeID
                    select c).ToList();
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top