2016-10-20 5 views
3

Linq에서 SQL로 ORM을 사용하는 일부 레거시 코드가 있습니다. 이 논리를 .Net Core로 마이그레이션하여 Linux 서버에이 논리를 저장할 수 있습니다. 내가 말할 수있는 한 L2S는 .Net Core에 포함되어 있지 않습니다.Linq를 SQL 코드로 변환 .Net Core

저항이 가장 적은 마이그레이션 경로는 무엇입니까?

답변

0

레거시 코드를 .NET 코어로 다시 작성하는 경우 약간의 노력이 필요합니다.

L2S의 경우 Entity Framework Core를 사용하여 최신 쿼리로 다시 작성해야 할 수 있습니다. 그래도 데이터베이스에서 엔티티를 쉽게 생성 할 수 있습니다. Reverse engineer your model을 참조하십시오.

이것은 권장 방법이지만, 귀하의 경우에 가장 쉬운 방법인지는 확실하지 않습니다.

0

큰 결과를 청크로 가져 오기 위해 Skip and Take를 사용할 때 EF가 비효율적이기 때문에 L2S를 사용한 경우 가장 좋은 방법은 Dapper입니다. 자신에게 LINQPad의 복사본을 가져 와서 각 LINQ 표현식에 대해 생성 된 SQL을 가져 오십시오.

L2S는 SQL의 rownumber 함수를 사용하여 건너 뛰기 및 가져 오기를 구현하기 위해 실제 쿼리를 기이 한 일부 SQL을 래핑합니다. SQL Server의 최신 버전을 사용하는 경우 TSQL에 건너 뛰기 및 가져 오기와 동일한 절이 있으므로이 작업이 필요하지 않습니다. 이것은 SQL을 직접 작성하고 따르는 사람들에게 WTF를 유도하지 않는 이해하기 쉬운 SQL을 생성하지만 LINQ 방법은 모든 버전의 SQL Server에서 작동하는 경우 유용합니다.

그런 다음이 SQL을 Dapper와 함께 사용하면 ORM 파트가 수행됩니다. 또한 L2S와 유사한 유형 매핑 매개 변수를 적절히 지원하므로 SQL 문자열 및 주입 취약점을 피할 수 있습니다.

컬렉션 멤버쉽에 의해 암시 된 FK 값을 가진 객체 그래프를 구성하는 데 모든 지능형 객체를 원한다면 손이없는 것입니다. 직접 코딩해야합니다.