문제

나는 Linq World를 처음 접했고 현재 그것을 탐구하고 있습니다. 데이터베이스 상호 작용과 관련된 다음 프로젝트에서 사용하려고 생각하고 있습니다.

내가 읽은 내용에서 데이터베이스와 상호 작용하는 두 가지 방법이 있다고 생각합니다.

  • LINQ에서 SQL
  • LINQ에서 데이터 세트

이제 내가 작업해야 할 제품은 데이터베이스 유형에 의존 할 수 없습니다. 예를 들어 SQL Server/Oracle과 함께 배포 될 수 있습니다.

이제 내 질문은 다음과 같습니다.

  1. LINQ에서 SQL을 사용하는 경우 SQL Server 만 고착합니까?
  2. SQL Server와 Oracle 모두에 LINQ에 데이터 세트를 사용할 수 있다고 생각합니다. 그러나 SQL Server 용 LINQ에서 DataSet (LINQ에서 SQL OffCourse에 비해 LINQ를 DataSet)을 사용하는 경우 (프로그래밍, 성능, 안정성 등) 무언가를 잃게됩니다.
도움이 되었습니까?

해결책

귀하는 #1 -1 -LINQ에서 SQL이 SQL Server 데이터베이스에 대해서만 작동합니다.

다른 데이터 소스 (다른 공급자 사용)에 액세스 할 수있는 기능을 원한다면 Ado Entity Framework와 함께 갈 것입니다. Poco와 같은 엔티티를 사용하는 측면에서 유사한 유연성을 얻을 수 있으며보다 고급/복잡한 구현을 위해 확장하기가 매우 쉽습니다.

현재 프로젝트에서는 LINQ에서 SQL을 사용하고 있으며 괜찮 았지만 극복해야 할 많은 문제가있었습니다. 나는 확장 성 측면에서 때때로 너무 단순하다는 것을 알았습니다. 나는 SQL과 엔티티 프레임 워크에 대한 LINQ에 관한 (더 나은) 응답을 썼습니다. 여기.

질문 #2와 관련하여 - 데이터 세트로 돌아가고 싶지는 않습니다. IMHO 그들은 과거의 일이지만, 특정 컨트롤 (Infragistics)이있는 괜찮은 툴킷이있는 경우 유용 할 수 있습니다. 그러나 빠른 트랜잭션 시스템에는 오버 헤드가 너무 비싸다는 것을 알게됩니다. 구현에는 LINQ에서 SQL 또는 엔티티 프레임 워크 기능의 절반이 없습니다.

다른 팁

첫 번째 질문에 답하기 위해 : 아니오, Oracle 용 LINQ 제공 업체의 다른 구현이 있습니다.

linqtooracle

dblinq

후자는 sqlite와 같은 더 많은 데이터베이스를 지원합니다.

또한 체크 아웃 ado.net 엔티티 프레임 워크.

  1. 예, SQL 서버 전용입니다. 또한 Microsoft는 L2를 동결 시켰으며 더 이상 개선하지 않을 것입니다. 그러나 그것은 좋은 프레임 워크이며, 실제로 잘 수행하며 사용하기 쉽습니다.
  2. LINQ에서 데이터 세트에 대한 데이터가 DB에서 데이터를 가져온 후 열거형으로 데이터 세트에 액세스합니다. LINQ에서 SQL은 iquerible을 사용하여 실제로 동적 SQL 쿼리를 구축합니다. 대부분의 경우 L2S는 훨씬 더 나은 성능을 발휘하고 DB 코드를 전혀 쓰지 않아도됩니다.

엔티티에 LINQ를 조사해야합니다. 이것이 가장 본격적인 프레임 워크입니다. 지금은 주로 SQL Server를위한 것이지만 Oracle 등을 지원할 수 있습니다.

  1. SQL Server 만 사용하지 않습니다. 이론적으로 모든 데이터베이스에 대한 LINQ 제공 업체를 구축 할 수 있습니다. LINQ에 대한 CodePlex에 대한 프로젝트가 있습니다. http://www.codeplex.com/linqtooracle. 나는 그것을 직접 시도하지 않았다.

  2. 데이터를 데이터 세트에 어떻게 가져 오십니까? 나는 당신이 전체 테이블을 데이터 세트로 가져올 것이라고 생각하지 않습니까? 그것은 심각한 성능 문제 일 것입니다. LINQ에 데이터 세트를 사용하려면 LINQ가 SQL 쿼리를 생성하는 대신 데이터베이스에서 데이터를 가져 오려면 모든 SQL 쿼리를 직접 작성해야합니다. 따라서 먼저 데이터베이스를 쿼리 한 다음 데이터 세트를 쿼리해야합니다. 나에게 이중 작업처럼 보인다 ...

LINQ에서 SQL을 사용하면 내가 아는 한 SQL Server에 거의 붙어있을 것입니다.

LINQ에 데이터 세트를 사용하면 프로그래밍이 약간 손실됩니다. LINQ를 사용하면 데이터 세트와 함께 LINQ 엔티티를 직접 사용할 수 있으므로 데이터 세트 이름 (myDataset.Entity = new MyDataset.Entity (myDataset.entity)를 계속 사용해야합니다. )), 잠시 후에 늙어갑니다. 나는 그것이 유일한 희생이라고 생각합니다.

그러나 EG Oracle과 함께 사용할 수 있습니다 (프로젝트에서 수행). 또한 DataAdapter에 약간 더 많은 제어 기능을 갖춘 드래그 앤 드롭입니다 (내가 아는 한, Linq-to-SQL을 많이 조정할 필요가 없었습니다). , 등.

데이터 세트에서 테이블 간의 관계를 여전히 정의 할 수 있으므로 LINQ를 충분히 잘 사용할 수 있으므로 실제로 문제가 표시되지 않습니다.

나는 LINQ-to-SQL (문제가 없음)과 마찬가지로 LINQ-to-Dataset에서 신뢰성이 좋다고 가정합니다. 성능은 충분히 좋았으며 실제로 프로필을 할 수 없었습니다.

당신은 SQL Server에만 붙어 있지 않습니다. Oracle, MySQL, PostgreSQL 및 SQLite 서버에 대해 LINQ에서 SQL 구현을 제공합니다. 더 많은 정보를 얻으십시오 여기데이터 세트는 LINQ에서 SQL 기술과 비교하여 편리하지 않습니다. 대안으로 엔티티 프레임 워크 옵션을 확인하십시오. 하나의 개념 모델로 여러 스토리지 모델을 작성한 다음 SQL Server 및 Oracle 데이터베이스를 병렬로 사용할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top