문제

ASP.NET DropdownList를 엔티티 프레임 워크 쿼리의 결과에 바인딩하면서도 멀티 계층 분리를 유지하려고합니다. (예 : 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 ()에 도달하면 "doctypedRopdownList.databind ();"메시지와 함께 ObjectDispossionException을 던집니다. 누구든지 이것을 다루는 가장 좋은 방법을 조언 할 수 있습니까?

고마워요, 앤디

도움이 되었습니까?

해결책

상황에서 물체를 분리 할 필요가 없습니까? 예 :

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