2011-02-01 5 views
2

Linq 쿼리 작성은 SQL 및 MS Access 데이터베이스에서도 한 번 실행할 수 있다고 들었습니다. 그것은 옳은가 틀린가?여러 RDBMS 유형이있는 Linq

예를 들어 현재 MS Access 데이터베이스를 사용하고 있고 나중에 SQL Server로 이동하려는 경우 쿼리 유형을 변경하지 않고 한 번만 쿼리를 작성하고 싶습니다. 이것이 가능한가??

+0

문제없이 SQL Server와 SQL CE 모두에서 동일한 어셈블리를 사용하고 있습니다. 즉, 생성 된 코드를 다소 수정해야하고 SQL CE에서 사용할 수있는 뷰 (뷰, 저장된 procs, 함수 없음 등)로 제한해야했습니다. – leppie

답변

2

일부는 쿼리에 따라 다릅니다. 쿼리 (select, where, orderby)에 대해서는 잘해야하지만 구현 관련 세부 사항이 많이 있습니다. 당신이 명시 적으로 주문하지 않은

  • 이 세트에 First을 복용 : 예를 들어

    SQL은 LINQ - 투 - 그게 괜찮, LINQ - 투 - 엔티티 Expression.Invoke에를 사용하여

  • 실패합니다 LINQ-to-Entities가 실패 할 것입니다.
  • UDF와 같은 것을 사용하면 LINQ-to-Entities가 지원되지 않으므로 RDBMS가 지원하지 않을 수 있습니다.
  • "Astoria"(LINQ to data services)를 사용하는
  • ; 의미 동일하지만, (아스토리아에서) IIRC 하나의 작품

내 지점입니다 - 일부 .Where(predicate).FirstOrDefault().FirstOrDefault(predicate) 주위 시나리오 그것은 일 수도 있고 일 수도 있지만 특정 구현에 대해 테스트해야합니다.

0

LINQ-to-SQL은 SQL 서버에서만 작동합니다. 개체에 대한 Linq는 대부분의 컬렉션에서 작동하지만 지연된 실행을 잃게됩니다.

0

Entity Framework를 사용하는 경우 다양한 데이터 원본에 대한 여러 공급자를 찾고 구입할 수 있습니다.

엔티티 컨텍스트를 충분히 추상화하면 모든 LINQ 구문을 사용하여 쿼리를 작성할 수 있습니다. 그러나 모든 공급자가 동일한 운영자와 기능을 지원하는 것은 아닙니다. DBMS 변경 중에도 전체 응용 프로그램을 테스트해야합니다.

0

기본적으로 Linq 개체를 사용하고 모든 데이터 집합을 사용할 수 있습니다.

논리를 저장하고 구체적으로 저장하려면 Devart LinqConnect을 사용하는 것이 좋습니다.

given article에서 Oracle 및 MS SQL 동시 사용에 대한 자세한 내용을 볼 수도 있습니다. 접근법은 LinqConnect와 동일합니다.