2010-08-27 34 views
6

Tôi có một mô hình đối tượng mà tôi muốn lưu trữ bằng cơ sở dữ liệu nhúng. Tôi cho đến nay đã được nhìn vào db4o, NHibernate để SQLCE (w/LINQ), và RavenDB. Điều này sẽ được sử dụng trong một ứng dụng C# trên máy tính để bàn.Tìm hướng dẫn về cơ sở dữ liệu .NET nhúng (chẳng hạn như db4o, NHibernate hoặc RavenDB)

Các tính năng chính Tôi đang tìm kiếm để đòn bẩy là: LINQ hoặc tương tự cho các truy vấn (không SQL hoặc HQL), động cơ dữ liệu nhúng, pocos, poco mô hình đầu tiên, không có cài đặt (không đăng ký hoặc tương tự)

Can bất kỳ một gợi ý một? Có phải ba tôi đang nhìn vào những lựa chọn tốt nhất? Có các lựa chọn khác không? Trong số ba, bất cứ ai có thể giới thiệu một trong những khác?

Cảm ơn

+0

có thể trùng lặp của [Cơ sở dữ liệu nhúng cho .net] (http://stackoverflow.com/questions/684595/embedded-database-for-net) –

+0

cũng http://stackoverflow.com/questions/2842189/good- nhúng-cơ sở dữ liệu-giải pháp-như-sqlite-cho-net và http://stackoverflow.com/questions/271319/lightweight-sql-database-which-doesnt-require-installation –

Trả lời

10

Vâng, ba cơ sở dữ liệu được đề xuất rất khác nhau về bản chất của chúng. SQLCE với Hibernate như RDBMS với một ORM, db4o làm cơ sở dữ liệu đối tượng và RavenDB làm cơ sở dữ liệu tài liệu. Mỗi người trong số họ có thế mạnh của nó.

SQL CE & NHibernate-Combo Ưu điểm:

  • hỗ trợ cực tốt trong dụng cụ, kiến ​​thức và một cộng đồng lớn là có
  • Dễ upgrage đến các máy chủ MS SQL
  • Extrem hỗ trợ báo cáo tốt
  • Sức mạnh của SQL

Nhược điểm:

  • nhu cầu lập bản đồ
  • Các ánh xạ giữa OO và thế giới quan hệ là không dễ dàng và có thể dẫn đến các vấn đề với các mô hình phức tạp.

RavenDB

Ưu điểm:

  • Không cần bất kỳ bản đồ
  • Dễ sử dụng
  • indexing mạnh mẽ
  • JSON & truy cập HTTP

Nhược điểm:

  • Nếu tên miền của bạn không phù hợp với một cách tiếp cận tài liệu theo định hướng, nó sẽ khá đau đớn
  • Nó không hỗ trợ.NET Framework Client Profile (đó là đặc biệt quan trọng như câu hỏi của OP là liên quan đến cơ sở dữ liệu nhúng)

db4o

Ưu điểm:

  • Không cần bất kỳ bản đồ
  • Dễ sử dụng
  • Mô hình lưu trữ đóng mô hình đối tượng. Điều này cũng làm việc cho các mô hình rất phức tạp.
  • -

Nhược điểm:

  • hỗ trợ dụng cụ là yếu.

Afaik cả ba hỗ trợ LINQ và POCO-cách tiếp cận đầu tiên. Tuy nhiên kể từ NHibernate & SQL CE vẫn cần tấn ánh xạ của nó không phải là ma sát miễn phí vì nó có thể được.

Tôi nghĩ nếu trọng tâm của bạn là POCO trước tiên, hỗ trợ LINQ, sử dụng ebedded và dễ sử dụng, tôi sẽ thử RaveDB hoặc db4o. Nếu trọng tâm của bạn là 'an toàn', kiến ​​thức cộng đồng, hỗ trợ công cụ và báo cáo tôi sẽ đi với NHibernate và SQL CE.

+0

Cảm ơn. Cho rằng tên miền của tôi không phải là quá lớn như để làm cho nỗ lực lập bản đồ nỗ lực quá nhiều, tôi tin rằng cách tiếp cận NHibernate có thể là tốt nhất. Chủ yếu là vì sự hỗ trợ của cộng đồng. RavenDB hơi quá mới để có cơ sở tri thức lớn. –

+0

Là một cơ sở dữ liệu * được nhúng *, NHibernate có các vấn đề nghiêm trọng. Tôi muốn chọn Linq-To-SQL hoặc EntityFramework4 từ lâu trước khi chọn NHibernate tại thời điểm này. Cả hai công nghệ này đều được đưa vào khung công tác và không có phụ thuộc bên ngoài. –

0

Xem this question. Để được hỗ trợ LINQ, hãy kiểm tra DbLinq hoặc vì bạn đã có ý định sử dụng NHibernate, bạn có thể sử dụng nhà cung cấp LINQ của NHibernate.

+0

Tôi đã thấy các bài đăng khác. Vấn đề là họ tập trung vào các cửa hàng dữ liệu quan hệ nhúng, và tôi đang tìm một cái gì đó để lưu trữ một mô hình đối tượng. Họ cung cấp các tùy chọn cho phía sau NHibernate. DbLinq sẽ cung cấp cho tôi một nhà cung cấp LINQ cho kho dữ liệu bên dưới, nhưng nó sẽ không cung cấp mô hình POCO đầu tiên phong phú mà tôi đang tìm kiếm. Tôi đánh giá cao đề xuất và nếu tôi sử dụng NHibernate, tôi có thể xem xét các tùy chọn đó. Tuy nhiên, tôi vẫn đang tìm kiếm các đề xuất cho những gì sẽ hoạt động tốt nhất ở mô hình đầu tiên của POCO. –

+1

@David B: xem các ánh xạ tự động của nhibernate: http://wiki.fluentnhibernate.org/Auto_mapping –

+0

Cảm ơn, đó là những gì tôi đang cân nhắc. Tuy nhiên, tôi đã nhìn thấy tin tức tích cực hơn về hai người khác gần đây, và hy vọng tìm hiểu xem NHibernate vẫn là sự lựa chọn defacto. –

3

Firebird là một cơ sở dữ liệu nhúng tuyệt vời mà từ lâu đã hỗ trợ tất cả các tính năng hiện đại của một cơ sở dữ liệu doanh nghiệp:

  • ANSI SQL
  • ACID
  • Stored procedures
  • Triggers

Bạn có thể nhận được .NET provider (cập nhật lần cuối vào ngày 24 tháng 5 theo trang web) và nó hỗ trợ Entity Framework và LINQ.