2010-07-06 3 views
4

좋아, "내가 뭘 사용해야하는지"는 매우 넓어서 사용 시나리오를 좁혀 보자. 기본적으로, 우리는 오랜 전에 ORM을 사용해야했습니다. 이제 C# 코드에서 생성 된 모든 SQL 쿼리 라인을 다시 작성하고 다시 작성할 수있는 방법은 없습니다. 그러나 우리는 최소한 올바른 방향으로 몇 걸음 밟아보기를 원합니다. 따라서 우리가 새로운 코드를 작성할 때 (그리고 리팩토링과 함께 자유 시간에) 우리는 일종의 ORM으로 변환하려고합니다.우리가 필요로하는 가벼운 ORM은 무엇입니까?

이 목적으로 좋은 ORM은 무엇입니까? 우리는 닷넷 3.5와 ASP.Net (webforms)을 사용하고 있습니다. "동적 인"스키마를 가진 몇몇 테이블을 제외하고는 우리 데이터베이스에 대해 놀랄만큼 복잡하지는 않습니다. 우리는 많은 양의 뷰 (웹 애플리케이션에서 많이 사용하지 않음)를 가지고 있으며 저장 프로 시저는 거의 사용하지 않습니다. 우리의 데이터베이스는 SQL Server 2005입니다. 우리의 가격 범위는 가능한 한 저렴하고 오픈 소스가 선호됩니다. 그러나 이것은 독점 프로젝트이므로 GPL 라이브러리 등을 사용할 수 없습니다.

동적 스키마 정보 기본적으로 특정 테이블에 여러 유형의 열을 추가하거나 제거 할 수 있습니다.

우리의 뷰 사용은 거의 존재하지 않으며 우리는 항상 저장 프로 시저 코드를 추출 할 수 있습니다. 나는 데이터베이스에 2 또는 3 만 있다고 믿습니다.

+1

MyBatis.NET (이전 iBatis) http://www.mybatis.org/ 및 http://code.google.com/p/mybatisnet/ –

+0

가능한 중복 [어떤 ORM for .NET을 권장하겠습니까?] (http://stackoverflow.com/questions/132676/which-orm-for-net-would-you-recommend), http://stackoverflow.com/questions/3505/what-are-your-favorite-net- object-relational-mappers-orm 및 http://stackoverflow.com/questions/206197/best-free-orm-tools-to-use-with-net-2-0-3-5 –

+0

@ 코빈 보다 개인화 된 의견을 찾고 있습니다. 나는 ORM에 완전히 익숙하지 않지만 모든 ORM이 내 요구에 잘 부합하는 것은 아니라는 것을 알고 있습니다. – Earlz

답변

3

저는 Linq-to-SQL을 제안 할 때 두 번째 저스틴이됩니다. 실제로 죽지는 않았습니다!

만약 당신이 선택하지 않거나 SQLite와 같은 것에 도전해야한다면, 가볍고, 사용하기 쉽고, 무료이며, 소스를 가지고 체크 아웃해야합니다. - 이름을 지정하십시오.

+0

+1가! 나는 아음속에 대해 잊었다. 잘 했어. –

+1

Subsonic은 정말 작은 학습 곡선을 가지고 있으며, 우리 프로젝트에서 약 30 분 만에 첫 쿼리를 실행하고 실행 시켰습니다. 작업을위한 도구처럼 보입니다. – Earlz

+0

참고 : SubSonic을 아무에게도 추천하지 않습니다. 더 이상. 조인은 전혀 지원하지 않습니다. 모든 조인은 전체 테이블 스캔을 수행합니다. 그러나 프로젝트 [BLToolkit] (http://bltoolkit.net/default.aspx?AspxAutoDetectCookieSupport=1)도 비슷하지만 작업 결합이 있습니다 – Earlz

4

.NET 3.5의 경우 LINQ to SQL을 무료로 사용할 수 있고 뷰 및 저장 프로 시저를 지원하며 작은 학습 곡선이 있습니다. 내가 사용하려고하는 데 어려움을 겪을 것이라고 생각하는 유일한 방법은 "동적 스키마"테이블입니다 (정교함을 원할 수도 있습니다).

또 다른 오픈 소스 대안은 훌륭한 ORM이지만 내 의견으로는 훨씬 더 가파른 학습 곡선을 가지고있을 것이라고 nHibernate이 될 것입니다.

+1

가파른 학습 곡선이지만 정상에서의 시야는 등반의 가치가 있습니다. –

+1

가파른 것을 쉽게하기 위해 FluentNHibernate 및/또는 Castle ActiveRecord를 확인하십시오. –

1

내가 정말 쉽게 생성되는 것을 변경할 수 있도록이 T4를 사용하여 클래스를 생성 쉽게 데이터 액세스를 위해 SubSonic를 사용하여 즐길 수 (전체 공개는 PetaPoco는 내가 쓴 무언가이다). 그것의 더 많은 활성 레코드 스타일의 데이터 액세스 다음 nHibernate 같은 진정한 ORM 있지만 linq SQL에 진정한 ORM 아닙니다.

+0

SubSonic은 절대 조인 할 필요가 없다고 가정 할 때 멋지다. 이 프로젝트에서는 (당시) SubSonic을 사용했고 1 년 후 조인 (join)과 함께 거대한 성능 문제를 발견 한 후 ORM을 생성하는 다른 T4에서 다시 작성했습니다 (지금 당장은 기억이 안납니다) – Earlz

+0

당신이 그것을 생각한다면 이름은 t4 기능을 많이 좋아합니다. – Aaron

+1

그냥 당신을 업데이 트하십시오. 마지막으로 [BLToolkit] (http://bltoolkit.net/default.aspx?AspxAutoDetectCookieSupport=1)에서 사용 된 음속 대체의 이름을 기억합니다. 조금 더 높은 학습 곡선이지만 조인은 실제로 조인입니다. 전체 테이블 스캔이 아님 – Earlz

관련 문제