[c#] 쿼리 패턴의 구현을 찾을 수 없습니다.

Silverlight 응용 프로그램에서 LINQ를 사용하여 데이터베이스 연결을 만들려고합니다. 먼저 새 LINQ to SQL 클래스를 추가하고 “tblPersoon”이라는 테이블을 여기에 끌어 놓습니다.

그런 다음 내 서비스 파일에서 다음 쿼리를 실행하려고합니다.

[OperationContract]
public tblPersoon GetPersoonByID(string id)
{
    var query = (from p in tblPersoon where p.id == id select p).Single();

그러나 tblPersoon에서는 다음과 같은 오류가 발생합니다.

소스 유형 ‘SilverlightApplication1.Web.tblPersoon’에 대한 쿼리 패턴의 구현을 찾을 수 없습니다. ‘어디’를 찾을 수 없습니다.

그리고 다음을 시도해도 :

var query = (from p in tblPersoon select p).Single();

‘선택’을 찾을 수 없다는 오류 메시지가 표시됩니다!

내 테이블에 대해 생성 된 클래스의 코드는 http://pastebin.com/edx3XRhi 에서 찾을 수 있습니다.

이 원인은 무엇이며 어떻게 해결할 수 있습니까?

감사합니다.



답변

는 IS tblPersoon구현 IEnumerable<T>? 다음을 사용하여 수행해야 할 수 있습니다.

var query = (from p in tblPersoon.Cast<Person>() select p).Single();

이러한 종류의 오류 ( 쿼리 패턴의 구현을 찾을 수 없음 )는 일반적으로 다음과 같은 경우에 발생합니다.

  • LINQ 네임 스페이스 사용이 누락되었습니다 ( using System.Linq).
  • 쿼리중인 유형이 구현되지 않았습니다. IEnumerable<T>

편집 :

tblPersoonproperty 대신 type ( ) 을 쿼리하는 것 외에도 다음과 tblPersoons같이 컨텍스트 인스턴스 ( tblPersoons속성 을 정의하는 클래스)가 필요합니다 .

public tblPersoon GetPersoonByID(string id)
{
    var context = new DataClasses1DataContext();
    var query = context.tblPersoons.Where(p => p.id == id).Single();
    // ...


답변

using파일에 명령문 을 추가해야 할 수도 있습니다. 기본 Silverlight 클래스 템플릿에는 다음이 포함되어 있지 않습니다.

using System.Linq;


답변

다음 참조가 포함되어 있는지 확인하십시오.

  • System.Data.Linq
  • System.Data.Entity

그런 다음 using 문을 추가합니다.

using System.Linq;


답변

생성 된 강력한 형식의 데이터 세트와 비슷한 문제가 있었는데 전체 오류 메시지는 다음과 같습니다.

소스 유형 ‘MyApp.InvcHeadDataTable’에 대한 쿼리 패턴 구현을 찾을 수 없습니다. ‘어디’를 찾을 수 없습니다. 범위 변수 ‘row’의 유형을 명시 적으로 지정하는 것을 고려하십시오.

내 코드에서 :

        var x =
            from row in ds.InvcHead
            where row.Company == Session.CompanyID
            select row;

그래서 저는 제안한대로하고 명시 적으로 유형을 지정했습니다.

        var x =
            from MyApp.InvcHeadRow row in ds.InvcHead
            where row.Company == Session.CompanyID
            select row;

치료 효과가있었습니다.


답변

평등이 누락되었습니다.

var query = (from p in tblPersoon where p.id == 5 select p).Single();

where 절의 결과는 부울이어야합니다.

또는 전혀 사용하지 않아야 where합니다.

var query = (from p in tblPersoon select p).Single();


답변

제목에 설명 된 것과 동일한 오류가 있었지만 나에게는 LinqToExcel과 함께 사용하기 위해 재배포 가능한 Microsoft 액세스 12.0 oledb를 설치하는 것뿐이었습니다.


답변

안녕하세요 이 작업을 수행하는 가장 쉬운 방법은 쿼리 가능한에이 IEnumerable을 변환하는 것입니다

쿼리 가능한 경우 쿼리 수행이 쉬워집니다.

이 코드를 확인하십시오 :

var result = (from s in _ctx.ScannedDatas.AsQueryable()
                              where s.Data == scanData
                              select s.Id).FirstOrDefault();
                return "Match Found";

System.Linq 를 포함해야합니다 . 이렇게하면 오류가 해결됩니다.