문제

NHibernate는 모든 종속성으로 인해 실제로 우리 환경에 적합하지 않습니다.(캐슬, log4net 등)

좋은 경량 대안이 있습니까?

Access/SQLite/VistaDB와 같은 간단한 파일 기반 데이터베이스에 대한 지원은 필수적입니다.

이상적으로는 .NET 어셈블리만 참조하는 단일 어셈블리에 포함된 항목입니다..NET Framework 2.0 또는 3.0만 필요한 경우 이는 보너스입니다.

도움이 되었습니까?

해결책

일반적으로 데이터베이스 백엔드가 .net에서 작동하려면 ADO.Net 공급자가 필요합니다.

MS Access(Jet)의 경우 공급자는 .net과 함께 제공됩니다.SQLite의 경우 자체 포함된 ADO.Net 공급자가 있습니다.

데이터 액세스 계층 lib의 경우 ADO.Net을 통해 추상화를 원하는 경우:

이러한 모든 기능은 프레임워크 2.0 이상부터 잘 작동합니다.

원래, 선택하세요(그리고 선택의 여지가 많습니다)

다른 팁

엄청난 - https://github.com/robconery/massive

또는

페타포코 - https://github.com/toptensoftware/petapoco

둘 다 GAC에 있는 항목을 제외하고 종속성이 없는 단일 .cs 파일입니다.

(전체 공개, PetaPoco는 제가 쓴 것입니다)

성능이 뛰어나고 단일 어셈블리만 필요한 경량 ORM의 경우 시도해 보는 것이 좋습니다. 빛의 속도 마인드스케이프에서.오픈 소스는 아니지만 소스를 사용할 수 있고 가격도 합리적입니다. 잘 채택되지 않은 대부분의 ORM의 위험은 물론 품질과 지원 수준이며 . 현재 넷 공간.

NHibernate의 종속성을 싫어하기 때문에 로깅 프레임워크나 성 프로젝트 측면이 필요하지 않은 것처럼 들립니다.IoC, 모노레일 등최소한의 NHibernate 요구 사항(제가 믿는 log4net 및 Iesi 컬렉션, 성 프로젝트의 동적 프록시?)을 고려하고 ILMerge를 실행하여 단일 어셈블리로 통합하는 것을 고려해 보셨나요? 약간의 조작이 필요할 수 있습니다. 하지만 그렇게 어렵지는 않습니다. 또는 프로젝트/조직에 필요하지 않은 기능을 제거하는 조직을 위해 유지 관리하는 NHibernate의 사용자 정의 빌드로 각 프로젝트의 소스 코드를 가져올 수도 있습니다. 그렇게 어렵지는 않습니다/어색하지 않습니다. 들리는 대로 저는 ORM의 이점을 원했지만 분산 파일/설치 프로그램의 크기를 줄여야 하는 한 프로젝트에 대해 다음과 같은 작업을 수행했습니다.

또한 - Nhibernate 기반 솔루션에 대해 너무 "무거운" 느낌을 설명할 수 있습니까?내 경험상 다른 프레임워크에 비해 상당히 가벼운 ORM 프레임워크입니다.

이 목록에 추가하여 다음을 살펴볼 수도 있습니다. 날씬한 (StackOverflow 자체를 위해 작성되고 사용됨)

몇 가지 대안:
- 액티브레코드 - 백그라운드에서 nhibernate.dll을 사용하지만 속성을 통해 구성이 수행됩니다.nhibernate의 라이트 버전과 같습니다.
- 아음속
- 쿨스토리지.NET - 작은 프로젝트에 많이 사용했어요.DB 수와 잘 작동합니다.

여기 큰 목록 대안 중 제가 추천하는 것은 다음과 같습니다.

  • 쿨스토리지
  • 수다
  • ODX
  • 광속(개체 8개 이하의 경우 무료)

그 4개가 가장 가볍습니다.Subsonic, ActiveRecord 등은 대규모 시스템을 목표로 합니다.소규모 시스템에서는 잘 작동하지만 (적어도 ActiveRecord의 경우) 소규모 시스템에는 엄청난 양의 종속성과 과잉 목록이 함께 제공됩니다.나는 Lightspeed를 선택하고 8개 미만의 개체는 작은 시스템이라고 말하고 싶습니다. NHibernate가 널리 채택되어 있기 때문에 간단히 사용하는 것은 확장에는 좋지만 단기적으로는 의미가 없으며 ORM과 소비자 사이에 계층을 두는 것이 작동할 수 있습니다. 어쨌든 그 주위에.

LINQ to SQL은 적절하게 사용한다면 ORM 시스템을 "heave"하는 좋은 대안이 될 수 있습니다.

완전한 기능을 갖춘 ORM이 필요하지 않고 ADO.NET을 통한 빠른 데이터베이스 독립 데이터 계층만 필요한 경우 오픈 소스를 사용해 보세요. NI.데이터 라이브러리(V2).매우 가벼우며(단 하나의 작은 어셈블리, 다른 종속성 없음) 모든 표준 데이터 계층 인프라를 제공합니다.

  • 'relex'라는 문자열 표현에 대한 쿼리 추상화 및 파서(예:"books(rated=5)[title,id]" - Linq-to-SQL에 대한 매우 좋은 대안이며 표현식을 즉석에서 구성할 수 있습니다.
  • 복잡한 DB 구문 종속 SQL 쿼리를 캡슐화하기 위한 '뷰' 개념
  • 데이터 트리거
  • 선택/업데이트/삭제 쿼리에 대한 데이터 영역 권한
  • 기본적으로 MS SQL, SQLite, MySQL, Odbc/OleDb 공급자(MS Access)를 지원합니다.다른 SQL 데이터베이스에 대한 지원을 쉽게 추가할 수 있습니다.

단 한 줄의 코드로 초기화된 주요 구성 요소(DALC)는 다음과 같습니다.

var dalc = new DbDalc(new SqlClientDalcFactory(), connectionStr);

그게 다야..NET 2.0 런타임 지원이 필요한 경우 2.0 런타임에서 최신 V2 버전을 컴파일하거나 이전 레거시 버전(NI.Data.Dalc, V1)을 사용해 볼 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top