2008-09-18 45 views
17

NHibernate không thực sự phù hợp với môi trường của chúng tôi do tất cả các phụ thuộc. (Lâu đài, log4net, v.v.)Lựa chọn thay thế nhẹ cho NHibernate

Có phương án thay thế nhẹ không?

Hỗ trợ cho các cơ sở dữ liệu dựa trên tệp đơn giản như Access/SQLite/VistaDB là điều cần thiết.

Lý tưởng nhất, một thứ có trong một hội đồng duy nhất chỉ tham chiếu đến các hội đồng .NET. Nếu nó chỉ yêu cầu .NET framework 2.0 hoặc 3.0 là một phần thưởng.

Trả lời

2

Nói chung, để phần phụ trợ cơ sở dữ liệu của bạn làm việc với .net, bạn cần một nhà cung cấp ADO.Net cho nó.

Đối với MS Access (Máy bay phản lực), Nhà cung cấp được giao với .net. Đối với SQLite, có một nhà cung cấp ADO.Net tự liên kết.

Đối với các lớp truy cập dữ liệu lib, nếu bạn muốn có một số trừu tượng trên ADO.Net:

Tất cả những công việc cũng bắt đầu với framework 2.0 trở lên.

Về cơ bản, bạn chọn (và có rất nhiều sự lựa chọn)

8

Đối với một ORM nhẹ hoạt động tốt và chỉ đòi hỏi một hội duy nhất tại sao không thử Lightspeed từ Mindscape. Nó không phải là nguồn mở, tuy nhiên nguồn có sẵn và có giá hợp lý - rủi ro với hầu hết ORM không được chấp nhận tốt là chất lượng khóa học và mức hỗ trợ, và có rất ít giá trị ORM nguồn mở khác làm phiền trong. Không gian mạng tại thời điểm này.

Vì bạn không thích phụ thuộc của NHibernate, có vẻ như bạn không có nhu cầu về khung đăng nhập hoặc bất kỳ khía cạnh dự án lâu đài nào tức là IoC, Monorail… Bạn có thể xem xét việc chỉ yêu cầu tối thiểu các yêu cầu NHibernate (log4net và bộ sưu tập Iesi mà tôi tin, và proxy động từ dự án lâu đài?) và chạy ILMerge trên chúng để hợp nhất chúng thành một assembly đơn lẻ - có thể hơi khó hiểu, nhưng nó không quá khó - hoặc cách khác bạn có thể kéo mã nguồn cho mỗi dự án này thành một xây dựng tùy chỉnh của NHibernate mà bạn duy trì cho tổ chức của mình để tìm ra các tính năng không được yêu cầu bởi dự án/tổ chức của bạn - nó không khó như âm thanh và tôi đã làm điều gì đó dọc theo những dòng này cho một dự án mà chúng tôi muốn hưởng lợi từ ORM, nhưng cần phải giảm kích thước của phân phối f iles/installer.

Ngoài ra - có lẽ bạn có thể giải thích những gì bạn cảm thấy quá "nặng" về giải pháp dựa trên Nhibernate ... theo kinh nghiệm của tôi, một khung ORM nhẹ hợp lý so với một số.

2

một số lựa chọn thay thế:
- ActiveRecord - sử dụng nhibernate.dll trong nền, nhưng cấu hình được thực hiện thông qua các thuộc tính.Nó giống như phiên bản lite của nhibernate
- Subsonic
- CoolStorage.NET - Tôi đã sử dụng nó rất nhiều với các dự án nhỏ. Hoạt động tốt với số lượng dbs

0

LINQ to SQL có thể thay thế tốt cho các hệ thống ORM "nhả" nếu bạn sử dụng đúng cách.

+3

LINQ to SQL chỉ hỗ trợ SQL Server - áp phích cho biết rằng hỗ trợ cho các tệp dựa trên DB là rất quan trọng. –

+0

LINQ to SQL hỗ trợ cơ sở dữ liệu dựa trên tệp - Microsoft SQL Server Compact, bằng chứng: http://pietschsoft.com/post/2009/01/Using-LINQ-to-SQL-with-SQL-Server-Compact-Edition.aspx – too

1

Dưới đây là một big list lựa chọn thay thế, cái tôi muốn khuyên:

  • Coolstorage
  • SOODA
  • ODX
  • Lightspeed (miễn phí cho 8 đối tượng hoặc ít hơn)

Những 4 là những người nhẹ nhất. Subsonic, ActiveRecord và những người khác là nhằm vào các hệ thống lớn. Họ làm việc tốt trên các hệ thống nhỏ hơn nhưng (atleast cho ActiveRecord) đi kèm với một danh sách rất lớn của phụ thuộc và overkill cho một hệ thống nhỏ. Tôi muốn đi với Lightspeed và nói bất cứ điều gì dưới 8 đối tượng là một hệ thống nhỏ, và đơn giản sử dụng NHibernate bởi vì nó được áp dụng rộng rãi là tốt cho việc mở rộng quy mô nhưng trong ngắn hạn không có ý nghĩa - và có một lớp giữa ORM và người tiêu dùng của bạn có thể làm việc xung quanh đó.

+0

Liên kết đó đã hết hạn, vị trí mới là http://shrinkrays.net/articles/a-look-at-net-object-relational-mapper-orms.aspx –

+0

Cập nhật url –

7

Thêm vào danh sách này, bạn cũng có thể có một cái nhìn tại Dapper (viết cho và được sử dụng bởi StackOverflow chính nó).

+0

Thư viện rất đẹp - đơn giản là một hình thức nghệ thuật bị mất! –

0

Nếu bạn không cần ORM đầy đủ chức năng và chỉ cần lớp dữ liệu độc lập cơ sở dữ liệu nhanh trên ADO.NET hãy thử mã nguồn mở NI.Data library (V2). Nó là rất nhẹ (chỉ cần một lắp ráp nhỏ, không phụ thuộc khác), cung cấp tất cả các cơ sở hạ tầng tiêu chuẩn lớp dữ liệu:

  • truy vấn trừu tượng và phân tích cú pháp cho đại diện chuỗi của nó gọi là 'relex' (nó trông giống như: "sách (giá = 5) [title, id]" - rất tốt để thay thế cho LINQ-to-SQL và các biểu thức có thể được sáng tác khi đang bay)
  • 'xem' khái niệm cho đóng gói phức tạp DB-cú pháp SQL phụ thuộc truy vấn
  • dữ liệu gây
  • quyền lớp dữ liệu cho các truy vấn chọn/cập nhật/xóa
  • từ b bò hỗ trợ các nhà cung cấp MS SQL, SQLite, MySQL, Odbc/OleDb (MS Access). Hỗ trợ cho các cơ sở dữ liệu SQL khác có thể dễ dàng được thêm vào.

thành phần chính của nó (DALC) khởi tạo chỉ với một dòng mã:

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

đó là tất cả. Nếu bạn cần hỗ trợ thời gian chạy .NET 2.0, bạn có thể thử biên dịch phiên bản V2 mới nhất trong thời gian chạy 2.0 hoặc sử dụng phiên bản cũ trước đó (NI.Data.Dalc, V1).