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>
편집 :
tblPersoon
property 대신 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 를 포함해야합니다 . 이렇게하면 오류가 해결됩니다.
