2008-10-11 3 views
9

나는 ADO를 사용하여 MS 액세스 데이터베이스를 쿼리하고 LINQ를 통합하고자하는 학습용으로 ASP.Net 페이지를 가지고 있습니다. 인용구라고하는 간단한 표가 하나 있습니다.MS 액세스에 대한 LINQ asp.net 페이지.

필드는 QuoteID, QuoteDescription, QuoteAuthor, QuoteDate입니다. 나는 "1995 년 이후에 모든 인용 부호를 줘"와 같은 간단한 쿼리를 실행하고 싶습니다.

어떻게 내가이 ASP.Net 사이트에 LINQ를 통합 할 (C#을)

기본적으로, 내 질문에 MS 액세스에 대한 않습니다 LINQ 작업은?

+0

것은 여기 https://stackoverflow.com/questions/295772/query-microsoft-access-mdb-database- 내 대답을 참조하십시오 : 그래서 그 대신

SELECT * FROM Quotes WHERE Year(QuoteDate) > @Year 

의이 같은 것을 사용하십시오 using-linq-and-c-sharp/46945250 # 46945250, Windows Forms에서 VB.net –

답변

18

LINQ to SQL은 Access를 지원하지 않으므로 (즉, LINQ에 대한 Access/Jet 공급자가 없음) LINQ를 사용하여 DataSet을 쿼리 할 수 ​​있습니다. 즉, 결과에서 필요할 수있는 데이터베이스의 가능한 데이터로 데이터 세트를 채운 다음 클라이언트 측에서 필터링합니다.

var year = 1995; // you can pass the year into a method so you can filter on any year 
var results = from row in dsQuotes 
       where row.QuoteDate > year 
       select row; 

당신이이 가치가 있는지 결정해야 할 것이다 : 당신이 형식화 된 데이터 집합을 가지고, 당신은 TableAdapter가와()를 기입 한 후, 당신은 이런 식으로 뭔가를 할. 으로 데이터 세트를 채우고 모두 따옴표로 묶은 다음 LINQ를 사용하여 1995 년 이후의 따옴표 만 필터링하면됩니다. 적은 양의 데이터에 대해서는 왜 그렇지 않습니까? 그러나 매우 많은 양의 데이터를 얻으려면 속도가 너무 느려지지 않도록해야합니다.

데이터 집합을 사용하는 경우 새 TableAdapter 메서드가되는 사용자 지정 쿼리를 작성할 수 있습니다. 따라서 TableAdapter의 FillByYear() 메서드에 쿼리에 대한 올바른 SQL을 넣고 입력 한 DataTable을 채울 수 있습니다. 그렇게하면 필요한 데이터 만 다시 제공됩니다.

이 경로를 사용하는 경우 Access/Jet는 명명 된 매개 변수가 아닌 위치 매개 변수를 사용합니다.

SELECT * FROM Quotes WHERE Year(QuoteDate) > ? 
4

아니요 생각해보십시오. LINQ to SQL에서 Access를 지원합니다. 그러나 테이블이 메모리에 들어가기에 충분히 작은 경우 LINQ to DataSet을 사용하면 매우 쉽게 데이터 형식을 쿼리 할 수 ​​있습니다. 특히 강력하게 형식화 된 데이터 집합.

+0

을 사용하면 LINQ to DataSet의 의미를 설명 할 수 있습니까? 지금 내 쿼리에서 데이터 테이블에 대한 쿼리 – leora

+0

LINQ to DataSet은 기본적으로 DataSet 및 DataTable의 확장 메서드 집합입니다. 아이디어는 데이터베이스에서 이미 가져온 데이터에 대해 쿼리를 수행 할 수있게하는 것입니다. 자세한 내용은 http://www.danielmoth.com/Blog/2007/07/linq-to-dataset.html을 참조하십시오. –

+0

모두 "액세스"를 의미하지는 않습니다 - JET을 의미합니다. –

관련 문제