2009-02-19 32 views
8

Công ty của tôi đang tìm cách sử dụng ORM cho phát triển mới trong .Net. Chúng tôi hiện đang tìm kiếm tại nHibernate, vì phổ biến của nó, tuy nhiên LLBLGen là một lựa chọn khác mà chúng tôi có thể xem xét. Chi phí không phải là yếu tố chính. Chúng tôi cần một giải pháp cung cấp tách biệt mô hình miền từ cơ sở dữ liệu, chiến lược lưu bộ nhớ đệm tốt, năng suất phát triển (tức là nếu tôi có thể chỉnh sửa nó trong GUI thay vì tệp cấu hình, tuyệt vời), hỗ trợ khách hàng tốt.Tôi nên sử dụng công cụ ORM nào để phát triển .Net

Tôi biết rằng nHibernate rất phổ biến, nhưng tôi cũng biết rằng giá (miễn phí) có thể là một phần lý do đó cho các loại nguồn mở. Vì chi phí không phải là yếu tố chính (trừ khi giá là> 10.000 đô la), bạn sẽ chọn điều kiện nào cho hoàn cảnh của chúng tôi? Ngoài ra, những yếu tố khác, những yếu tố nào khác mà tôi đã liệt kê, bạn sẽ xem xét quan trọng nhất trong việc chọn một ORM?

Nghị quyết

Cuối cùng chúng tôi quyết định NHibernate như một giải pháp, tuy nhiên trong nhận thức muộn màng, tôi nghĩ rằng tôi đã có thể đi với LL nếu chúng ta có nó để làm lại từ đầu. Tôi không tìm thấy tệp ánh xạ xml. Các máy phát điện mã mà tôi tìm thấy cho NHibernate còn lại rất nhiều để được mong muốn. Tôi thấy Fluent NHibernate là một sự phát triển thú vị, nhưng tôi thà chờ nó phát triển trước khi sử dụng nó.

Khi nó bật ra, phần quan trọng nhất trong quá trình học tập của tôi hóa ra không phải là công nghệ, mà là hai mẫu thiết kế: kho lưu trữ và các mẫu giao diện riêng biệt. Bằng cách định nghĩa một giao diện kho lưu trữ để truy cập dữ liệu (Jeffrey Palermo có một số bài đăng trên blog về điều này và cả sách Apress và Wrox MVC cũng hiển thị điều này), chúng ta có thể sử dụng LinqtoSQL, LLBLGen, NHibernate, vv và trao đổi sau đó nếu chúng ta chuyển đổi. Vì vậy, trong khi một trong những đồng nghiệp của tôi đang sử dụng NHibernate trên ứng dụng của mình, tôi đã chọn sử dụng LinqToSQL trên ứng dụng gần đây nhất của tôi và nó hoạt động tốt.

Trả lời

8

Nếu bạn không ngại trả tiền, tôi sẽ đề nghị LLBLGen.

danh sách đầy đủ các tính năng here.

Từ trang web:

Đúng cơ sở dữ liệu mã độc lập

Full loại thực thể thừa kế hỗ trợ

LINQ

danh sách Typed và Typed views

thủ tục lưu trữ hỗ trợ

đồng thời linh hoạt cơ chế

Fine-grained khuôn khổ xác nhận

hỗ trợ bảng nguồn gốc

+0

Ric - chúng tôi hiện đang sử dụng LLBLGEN. Chúng tôi đang cố gắng kết hợp nhiều bài kiểm tra đơn vị hơn vào ứng dụng mới của chúng tôi và gặp một số khó khăn khi thực hiện mà không cần nhấn vào cơ sở dữ liệu (chúng tôi sử dụng mô hình bộ điều hợp). Làm thế nào để bạn tiếp cận đơn vị kiểm tra LLBL? –

+0

Hi @LuckyLindy Tôi đề nghị http://ayende.com/projects/rhino-mocks.aspx và tạo các đối tượng giả thay vì sử dụng cơ sở dữ liệu trực tiếp, tôi nghĩ rằng đây có thể là một câu hỏi SO đầy đủ gần như vì bạn có thể hỏi một cái gì đó xứng đáng câu trả lời hay hơn tôi :) –

2

Nó phụ thuộc một chút vào những gì bạn muốn:

  • Bạn có muốn tạo các lớp miền của riêng bạn, mà bạn không phải thừa hưởng từ một số bởi lớp cơ sở ORM được xác định hoặc giao diện, sau đó NHibernate là giải pháp ưa thích.

  • Bạn có muốn tự động tạo các lớp thực thể dựa trên mô hình cơ sở dữ liệu của mình không, sau đó bạn nên truy cập LLBLGen.

+0

Cơ sở dữ liệu sẽ thúc đẩy miền. Về cơ bản, chúng tôi trong kinh doanh kho dữ liệu và cốt lõi của doanh nghiệp là tải dữ liệu, so sánh dữ liệu dựa trên các quy tắc tùy chỉnh do khách hàng của chúng tôi thiết lập và sau đó cung cấp báo cáo cho khách hàng của chúng tôi. Có vẻ như câu trả lời của bạn là LLBLGen Pro sẽ hoạt động tốt nhất. – John

1

Chúng tôi sử dụng rất nhiều nHibernate. càng xa càng tốt.

3

Tôi đã sử dụng LlblGenPro kể từ năm 2003. Nó là một sản phẩm tuyệt vời , giá cả hợp lý, hỗ trợ tuyệt vời thông qua trang web thiết kế giải pháp. Frans (nhà phát triển chính) phát hành các bản vá khi cần và thường xuyên cài đặt đầy đủ mới để khách hàng đang gặp sự cố có thể tận dụng các bản sửa lỗi nhanh chóng.

Phiên bản hiện tại hỗ trợ LINQ cùng với cơ sở hạ tầng truy cập truyền thống của nó. Phiên bản 3 đang được phát triển, nhưng có thể sẽ không được phát hành cho đến năm 2010.

LlbGen bắt đầu bằng cách đọc (các) giản đồ cơ sở dữ liệu hiện tại của bạn, có thể tiết kiệm thời gian trong việc phát triển bản đồ đối tượng so với nHibernate.

Có những điều tôi muốn cải thiện với LlblGen, nhưng tôi là người dùng thời gian rất hạnh phúc và hỗ trợ của họ không thể bị đánh bại.

+0

nhận xét hữu ích tốt đẹp m4bwav - quan tâm giải thích tại sao? – redsquare

2

Một phiếu bầu cho LLBLGEN, không thể sống thiếu nó!

0

SignumFramework có full LINQ Provider và dựa trên phương pháp tiếp cận theo định hướng entitiy. Mặt khác là nó chỉ tốt cho những phát triển mới (không phải cho các cơ sở dữ liệu hiện có).

0

Nếu bạn bắt đầu từ đầu, bạn có thể sử dụng NHiberbate có nền đồng nhất. Nhưng, chúng tôi đang sử dụng LLBLGen Pro trong nhiều dự án, và nó rất chắc chắn và trực giao. Nó cũng có một tài liệu rất hay. NHibernate có một cộng đồng lớn (nếu chúng ta thêm Hibernate quá) nhưng LLBLGen là một sản phẩm rất trưởng thành, diễn đàn rất hữu ích, và tài liệu rất tốt.

RDMS sẽ được sử dụng là gì? Chúng tôi đang sử dụng LLBLGen Pro với Oracle, và nó hoàn toàn tách biệt cơ sở dữ liệu cụ thể và các hoạt động chung mà không có vấn đề gì. Nó đã tránh được hoàn toàn Inner Platform Effect. (Hãy suy nghĩ về các chuỗi Oracle và các trường SQL Server Identity chẳng hạn. Nó không phải là vấn đề với LLBLGen Pro.)

LLBLGen Pro là một trình tạo mã rất rộng. Nó ánh xạ các đối tượng trong cơ sở dữ liệu vào một lớp truy cập cơ sở dữ liệu như là một dự án có thể dễ dàng được thêm vào giải pháp của bạn. Điều này có một lợi thế rất tốt mà không thể được mặc dù ngay từ cái nhìn đầu tiên: Nếu một thủ tục lưu trữ hoặc thậm chí một lĩnh vực thay đổi/loại bỏ, bạn sẽ nhận thấy lỗi tại thời gian biên dịch, không chạy thời gian. Vì vậy, nếu bạn đã có một cơ sở dữ liệu đang chạy, hãy đi với LLBLGen Pro.

Bạn cũng có thể thêm các thành phần nguồn dữ liệu của nó vào Visual Studio nếu bạn là một người kéo và thả và dễ dàng ràng buộc dữ liệu. Một số người thấy nó hữu ích cho các dự án ASP.NET.

Điều quan trọng hơn: Danh sách được nhập: Đây là những điều rất hữu ích để tạo nguồn dữ liệu mà không thay đổi bất kỳ mã nào trong cơ sở dữ liệu. Vì vậy, nếu bạn có một số lưới hiển thị dữ liệu, bạn có thể cung cấp dữ liệu mà không cần chạm vào cơ sở dữ liệu trở nên rất an toàn trong các môi trường quan trọng.

Vì vậy, tôi sẽ đề xuất LLBLGen Pro mặc dù N/Hibernate có nhiều người dùng hơn.

0

Đối với các dự án nhỏ, tôi đã sử dụng Sooda nhưng đó là khoảng một năm trước. Bây giờ chỉ và chắc chắn NHibernate.

4

Khám phá DataObjects.Net (GPL + thương mại).

+0

Ngoài ra hãy chắc chắn để kiểm tra các cuộc thảo luận nhiều làm nổi bật như thế nào liên kết đăng trên thực hiện bản thân. Nhật ký điện tử là bạn của bạn. – nathanchere

Các vấn đề liên quan