2012-10-17 2 views
15

Visual Studio 2012에 코딩되어 있고 엔터티 모델을 내 데이터 계층으로 사용하고 있지 않습니다. 그러나, 내 드롭 다운 컨트롤을 Linq 문을 페이지를로드하려고 할 때 처리되지 않은 예외를 throw하는 경향이 위의 (명시된 제목). 아래는 내 코드입니다. 그 오류가 저장소 쿼리 (DbSet, DbQuery, DbSqlQuery)에 직접 바인딩되는 데이터는

  • 은 무엇 LINQ를 사용하는 경우 컨트롤에 바인딩 할 수있는 적절한 방법이어야한다 발생한 이유
    using (AdventureWorksEntities dw = new AdventureWorksEntities()) 
         { 
          ddlCon.DataSource = (from em in dw.Employees 
               select new { em.Title, em.EmployeeID }); 
    
          ddlCon.DataTextField = "Title"; 
          ddlCon.DataValueField = "EmployeeID"; 
          ddlCon.DataBind(); 
          ddlCon.Items.Insert(0, new ListItem("--Select--", "--Select--")); 
         } 
    
    1. 나는 알고 싶어?
  • +2

    오류를 게시하면 도움이됩니다. – Max

    +0

    @Max 질문 제목 **은 ** 오류입니다 (믿을 수 없을만큼 분명하지는 않지만) –

    답변

    34

    오류는 매우 명확합니다. 쿼리 결과에 직접 바인딩 할 수는 없지만 일부 로컬 컬렉션을 대신 채워야합니다.

    이 작업을 수행하는 가장 간단한 방법은 ToList() 통해하는 List<T>로 변환하는 것입니다

    ddlCon.DataSource = (from em in dw.Employees 
              select new { em.Title, em.EmployeeID }).ToList(); 
    
    +0

    고맙습니다 ...하지만 이제는 새로운 LINQ 문이 dw.Employees 에서 같은 오류를 던지고 있다는 사실을 또 다시 발표했습니다. OrderBy (name => name) ... 제발 도와주세요 – Oluwafemi

    +0

    @ user1753728 다른 문제처럼 보입니다. 나는 별도의 질문으로 코드를 포함하여 세부 사항을 요구할 것이다. (박쥐 오른쪽에서, 익명의 전체 클래스에 의해 주문하고 있습니다. 아마도 당신이 원하는 것이 아닐 것입니다 ...) –

    +0

    아니요, 원하는 것은 아닙니다. 소스의 고유 항목이 필요합니다. – Oluwafemi

    3

    을 또는 당신이 LINQ 식을 작성하지 않도록하려면 당신은이 작업을 수행 할 수 있습니다 :

    var dbContext = new EF.CustomerEntities(); 
    gvCustomers.DataSource = dbContext.CustomersTable.ToList();