LINQ to SQL이 죽었습니까?


17

Linq를 SQL로 계속 사용해야 할 이유가 있습니까, 아니면 EF, NHibernate 등과 같은 ORM 기술로 옮기는 것이 좋습니다.

우리는 오랫동안 존재할 새로운 대기업 응용 프로그램에서 Linq to SQL을 사용하고 있습니다. 이 새로운 엔터프라이즈 응용 프로그램에 대한 동기는 응용 프로그램이 Visual Basic으로 작성되었으며 Microsoft가 응용 프로그램을 다시 작성해야하는 지원을 중단 한 이후입니다. 우리는 이미 있지만 이번에는 DAL (Data Access Layer)을 사용하고있는 것 같습니다.

나는이 기사를 이미 읽었 지만 EF의 약점과 비교할 뿐이다.


+1 great Q.이 글은 저에게 흥미로워 요. 저는 가독성을 높이기 위해 저장 프로 시저와 매개 변수화 된 SQL 쿼리 문자열을 LINQ to SQL로 옮기는 것을 고려하고 있습니다. 더 이상 개발되지 않았다는 것을 몰랐습니다.
fearoffours

MS는 죽지 않았다고 말한 .NET 4 슬라이드 쇼 유형을 가지고 있지만 많은 것을 의미 할 수 있습니다. 그들은 .NET 4.0에서 그것을 향상 시켰습니다 : damieng.com/blog/2009/06/01/linq-to-sql-changes-in-net-40
MetalMikester

다시는 아닙니다. 이 질문 StackOverflow에서 ad-nauseum대해 논의되었습니다 . FUD라고 말할 수 있습니까?
Robert Harvey

답변:


11

이미 사용하고 있고 어려움이 없다면 기존 프로젝트에 그대로 사용하십시오.

Linq2SQL은 매우 훌륭하지만 제한적인 ORM입니다. Linq2SQL에서 제공하는 기본 방법보다 복잡한 방법으로 객체를 매핑하려는 경우 문제가 발생합니다. Microsoft는 .net 4와 함께 나왔을 때 몇 가지 버그를 수정했지만이를 확장하는 데 리소스를 투자하지 않을 것이라고 말했습니다.

수명이 제한된 상당히 간단한 프로젝트가 있다면 Linq2SQL은 Linq2SQL에 대한 종속성을 모든 곳에서 유출하지 않도록주의하는 한 가벼운 선택입니다. Linq2SQL이 거의 막 다른 골목이기 때문에 더 많은 것을 위해 나는 다른 것 (예 : NHibernate 또는 EF)을 가지고 갈 것입니다.


나는 실제로 죽지 않았지만, 어떤 식 으로든 심사의 테이블에 있다는 것에 동의 할 수 있습니다. 작업이 진행 중이고 지금 변경하는 데 큰 영향을 미치는 경우 조금만 앉아 EF / NHibernate로 전환 할 수있는 좋은 시간을 원한다면 재정적 인 업그레이드 프로젝트가 될 수 있습니다. 모두는 테이블에 직업, 빵과 버터를 원한다).
사이버 사이버

@cyberzed : 불필요한 작업에 대한 좋은 변명처럼 들립니다.
Robert Harvey

12

죽지 않았지만 Microsoft는 이제 Entity Framework에 중점을 둡니다.

작은 프로젝트에서 LINQ to SQL을 사용했으며 경량 데이터 계층으로 꽤 좋으며 비슷한 크기의 프로젝트에서 다시 사용하는 것이 좋습니다. LINQ 구현 자체는 실제로 훌륭하며 최근까지 NHibernate LINQ 프로젝트보다 훨씬 우수합니다. L2S를 사용하는 더 큰 프로젝트에서 L2S 'DataContext'클래스의 제한으로 인해 내가 만족 한 작업 단위 패턴을 찾는 것이 어렵다는 것을 알았습니다. L2S로 '요청 당 세션'과 같은 것을 구현하는 것은 매우 어렵거나 불가능한 것 같습니다.

또한 실제로 많은 매핑 옵션을 제공하지 않기 때문에 L2S를 진정한 ORM으로 간주하지는 않습니다. 클래스 디자인은 실제로 데이터베이스 스키마 (클래스 당 테이블)를 따라야합니다. 그렇지 않으면 모든 단계에서 당신과 싸울 것입니다. 내가 L2S에 대해 싫어하는 또 다른 점은 컬렉션, 참조 및 지연 로딩을 처리 하기 위해 특정 유형 ( EntitySetEntityRef)을 사용해야한다는 것입니다 . 이는 다른 추상화 계층을 추가하지 않고 도메인 모델 ORM을 불가지론 적으로 유지할 수 없음을 의미합니다.

L2S의 다른 문제는 쿼리를 생성하기 위해 LINQ에 의존하는 것입니다. LINQ 공급자는 잘 작성되어 있으며 일반적으로 대부분의 쿼리에 대해 적절한 SQL을 생성하지만 LINQ로 잘 표현할 수없는 더 복잡한 쿼리가 있다는 우려가 있습니다. L2S를 사용하면 기본적으로 이러한 경우 저장 프로 시저 호출로 되돌려 야하지만 (예를 들어) NHibernate에는 생성 된 SQL에 대한 더 많은 제어를 원할 때 사용할 수있는 여러 API (LINQ 공급자, QueryOver, HQL 등)가 있습니다.

NHibernate에 대한 L2S의 방어에서는 프로젝트를 시작하고 실행하는 데 드는 오버 헤드 가 훨씬 적습니다.


2

여전히 작동하면서 죽지는 않았지만 더 개발되지 않으면 다른 것으로 이동하는 것이 합리적입니다.

그러나 응용 프로그램에서 작동하면 변경을 위해 변경할 필요가 없습니다.


2

죽은 imho보다 더 안정적입니다.

http://www.thinqlinq.com/default/LINQ-to-SQL-enhancements-for-2010.aspx

http://jonkruger.com/blog/2009/06/06/linq-to-sql-is-not-dead/

그들은 개선 노력을 Entity Framework로 옮겨 그 제품이 성공하기 위해 실제로 필요한 곳입니다. linq2sql의 호환성 및 버그 수정 이외의 새로운 기능은 한동안 기대합니다.

내가 실수하지 않으면이 사이트는 많은 linq2sql로 실행됩니다.


"안정한"+1 L2S를 보는 가장 좋은 방법, imho. 안정적이며 더 이상 확장 / 변경되지 않습니다.
quentin-starin

죄송하지만 "새로운 것은 없지만 호환성 및 버그 수정"이라는 의미가 있습니다. 그것은 기본적으로 커뮤니티가 커뮤니티에서 멀어 지리라는 보장입니다. 커뮤니티를 사용하는 많은 새 프로젝트가 표시되지 않으므로 새 프로젝트에서도 사용하고 싶지 않을 것입니다. "죽은"은 작동하지 않는다는 의미가 아니라 단지 혁신이나 관심이 거의 없음을 의미합니다.
제레미

대기업 관점에서 코어가 더 이상 수정되지 않는다는 사실은 결국 많은 경우 승인 된 기술 목록으로 넘어갈 수 있음을 의미합니다. 내 업무 라인에서 우리는 이것을 오랫동안 기다리고있었습니다. EF는 아직 급격히 변동하고 있으며 L2S는 항상 EF의 오버 헤드를 원하지 않는 상황에 관심을 끌 것입니다.
Bill

@Jeremy 사람들이 여전히 TeX를 사용합니까?
대안

1

이상하지만 나는이 문구를 많이 보았고 (“LINQ2SQL이 죽었다”) 어디에서 유래했는지 확실하지 않습니다 *. 그것은 죽은 Windows XP와 같습니다. Microsoft는 지원을 중단하고 새롭고 눈에 좋은 것을 만들었지 만 Linq2SQL을 자유롭게 사용할 수있는 것처럼 XP를 자유롭게 사용할 수 있습니다. 분명히, 나는 사용자 정의 DotNetNuke 모듈을 만들 때 Linq2SQL을 사용합니다. 그러나 code-first-development ( http://weblogs.asp.net/scottgu/archive/2010/07/16/code-first-development-with-entity-framework-4.aspx) 와 같은 EF4의 새로운 기능 ) Linq2SQL을 고수하는 이유를 찾기가 어렵습니다. 코드를 살펴보고 업데이트 할 이유가 없지만 새 코드의 경우 왜 EF4를 사용하고 싶지 않은지 모르겠습니다.

*하지만 모든 정직에서 나는 의미론에 대해 강박 적입니다! 다른 사람들에게 짜증나는 경우 사과드립니다. :)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.