죽지 않았지만 Microsoft는 이제 Entity Framework에 중점을 둡니다.
작은 프로젝트에서 LINQ to SQL을 사용했으며 경량 데이터 계층으로 꽤 좋으며 비슷한 크기의 프로젝트에서 다시 사용하는 것이 좋습니다. LINQ 구현 자체는 실제로 훌륭하며 최근까지 NHibernate LINQ 프로젝트보다 훨씬 우수합니다. L2S를 사용하는 더 큰 프로젝트에서 L2S 'DataContext'클래스의 제한으로 인해 내가 만족 한 작업 단위 패턴을 찾는 것이 어렵다는 것을 알았습니다. L2S로 '요청 당 세션'과 같은 것을 구현하는 것은 매우 어렵거나 불가능한 것 같습니다.
또한 실제로 많은 매핑 옵션을 제공하지 않기 때문에 L2S를 진정한 ORM으로 간주하지는 않습니다. 클래스 디자인은 실제로 데이터베이스 스키마 (클래스 당 테이블)를 따라야합니다. 그렇지 않으면 모든 단계에서 당신과 싸울 것입니다. 내가 L2S에 대해 싫어하는 또 다른 점은 컬렉션, 참조 및 지연 로딩을 처리 하기 위해 특정 유형 ( EntitySet
및 EntityRef
)을 사용해야한다는 것입니다 . 이는 다른 추상화 계층을 추가하지 않고 도메인 모델 ORM을 불가지론 적으로 유지할 수 없음을 의미합니다.
L2S의 다른 문제는 쿼리를 생성하기 위해 LINQ에 의존하는 것입니다. LINQ 공급자는 잘 작성되어 있으며 일반적으로 대부분의 쿼리에 대해 적절한 SQL을 생성하지만 LINQ로 잘 표현할 수없는 더 복잡한 쿼리가 있다는 우려가 있습니다. L2S를 사용하면 기본적으로 이러한 경우 저장 프로 시저 호출로 되돌려 야하지만 (예를 들어) NHibernate에는 생성 된 SQL에 대한 더 많은 제어를 원할 때 사용할 수있는 여러 API (LINQ 공급자, QueryOver, HQL 등)가 있습니다.
NHibernate에 대한 L2S의 방어에서는 프로젝트를 시작하고 실행하는 데 드는 오버 헤드 가 훨씬 적습니다.