2009-04-27 24 views
8

Tôi chỉ muốn làm một cuộc thăm dò nhanh để xem liệu Fluent Nhibernate có được nhận hay không hoặc nếu có nhiều vấn đề. Tôi thích Nhibernate nhưng tôi chắc chắn thấy vấn đề với xml để làm bản đồ.Dựa trên kinh nghiệm của bạn, có bao nhiêu bạn muốn giới thiệu fluent NHibernate trên Nhibernate cách làm việc cho dự án mới của tôi?

Vì vậy, tôi mong được các thành viên cộng đồng hiểu rõ hơn và giúp tôi chọn cái khác.

Tôi không xem xét khung linq2sql hoặc thực thể tại thời điểm này.

Trả lời

11

Tôi thích Fluent NHibernate và tôi nghĩ nó đủ trưởng thành nếu bạn định bắt đầu một dự án mới. Sử dụng nó trên một dự án mới nên cho phép dự án Fluent NHibernate tiếp tục trưởng thành khi bạn tiến triển. Có khả năng phá vỡ những thay đổi (như đã xảy ra gần đây với ánh xạ quy ước) nhưng bạn sẽ có thể giải quyết những thay đổi đó. Tôi đã có một vài vấn đề với ánh xạ nhưng dự án khá nhạy với báo cáo lỗi và hầu như đã hoạt động như mong đợi.

Các tùy chọn lập bản đồ là: ánh xạ

  • Xml - Tiêu chuẩn NHibernate. Các nhức đầu bảo trì cũng được biết đến nhưng lợi thế là bạn có quyền truy cập vào tất cả các tùy chọn cấu hình được cung cấp bởi NHibernate. Có một vài tùy chọn cấu hình ít được sử dụng hơn vẫn đang được bổ sung vào Fluent (ít nhất là lần cuối tôi chú ý). Vì vậy, nếu bạn đang dự đoán một số ánh xạ điên, bạn có thể muốn xem xét tùy chọn này.

  • Bản đồ chuẩn - Được cung cấp bởi Thông thạo. Bạn có thể tạo ánh xạ thông qua mã và tốt hơn nhiều cho việc tái cấu trúc và tác giả. Không có nhiều để nói về nó, theo kinh nghiệm của tôi, khác sau đó nó hoạt động tốt và là một cải tiến lớn về tùy chọn xml.

  • Ánh xạ tự động - Được cung cấp bởi Thông thạo. Cho phép bạn ánh xạ các thuộc tính đối tượng theo quy ước và nó cố gắng tự động tạo ánh xạ. Đó là một ý tưởng hay nhưng tôi nghĩ rằng nó vẫn có một số trưởng thành để làm. Tôi hiện đang sử dụng phương pháp ánh xạ này và nó hoạt động tốt nhưng tôi đã kết thúc viết một số lượng lớn các quy ước và chỉ định các mối quan hệ đối tượng mà nó không cảm thấy như nó được lưu nhiều nỗ lực từ ánh xạ chuẩn.

Fluent NHibernate cũng cung cấp các trình kiểm tra tốt đẹp để giúp bạn định cấu hình NHibernate dễ dàng hơn. Nhìn chung, đó là một dự án tốt và nó cung cấp một số chức năng bổ sung tốt đẹp cho NHibernate.


chỉnh sửa:

Một điều thêm cần lưu ý: Nếu bạn bắt đầu với thành thạo NHibernate và quyết định nó không phải là đi làm việc cho kịch bản của bạn, bạn có thể dễ dàng di chuyển trở lại ánh xạ xml. Fluiber NHibernate cho phép bạn xuất các ánh xạ mà nó tạo ra và bạn có thể sử dụng các xuất khẩu đó để không mất bất kỳ công việc ánh xạ nào mà bạn đã thực hiện.

5

Một trong những lợi thế tốt nhất của việc sử dụng thành thạo NHibernate trên vani NH là thoải mái thử nghiệm tích hợp với PersistenceSpecification <T>:

[Test] 
public void TestProductSave() 
    { 
    new PersistenceSpecification<Product>() 
     .CheckProperty(x => x.ProductName, "Wax") 
     .CheckProperty(x => x.Price, 20) 
     .VerifyTheMappings(); 
    } 
1

Tôi đã sử dụng thành thạo trên một dự án mới của tôi. Các vết sưng nhỏ duy nhất tôi đã đánh cho đến nay là nó không chơi rất tốt với Castle Windsor ra khỏi hộp, nhưng nó đã được khá dễ dàng để mở rộng Windsor để làm công việc. Khác hơn là tôi đã yêu nó. Nó ngắn gọn hơn nhiều so với ánh xạ XML.

Điều tuyệt vời về thông thạo là nó không phải là đầu tư tất cả hoặc không có gì. Bạn có thể viết hầu hết các ánh xạ của bạn thành thạo và nếu bạn tìm thấy bất kỳ vấn đề nào bạn có thể ánh xạ các lớp đó trong ánh xạ XML tiêu chuẩn cho đến khi các vấn đề thông thạo được giải quyết.

0

Tôi đang sử dụng FNH cho một dự án mới. Những gì tôi thích nhất là khả năng tạo và xây dựng cơ sở dữ liệu trực tiếp từ các lớp thực thể.

Tôi đã phải viết một vài quy ước cho các thuộc tính nhưng tôi muốn rằng sau đó duy trì nhiều hơn một danh sách cho mỗi lớp.

1

Giống như bất kỳ câu trả lời hay nào khác, nó phụ thuộc.

Tôi không nhận được nhiều mileage trong số các tính năng tự động hóa như tôi muốn. Tôi thường phải làm việc với các cơ sở dữ liệu từ trước.

Tôi đã có một số dự án sử dụng NHibernate dưới đai của mình, vì vậy việc sử dụng ánh xạ hbm không khó. Sau khi tôi đã tìm ra cách đưa vào lược đồ hbm, nó dễ dàng hơn nhiều.

Một lợi thế thực sự mà tôi thu được từ việc lưu loát-nhibernate là có thể cấu trúc lại các lớp miền của tôi và ánh xạ của tôi sẽ tự động thay đổi. Tôi đã không thực sự nhận thấy rằng sự gia tăng tốc độ trong việc viết các ánh xạ.

Giống như mọi thứ, YMMV.

+0

+1 cho lợi thế tái cấu trúc, đặc biệt là kết hợp với tự động hóa. Tôi có thể thấy cách các quy ước mặc định có thể vẫn yêu cầu một thời gian, nhưng ít nhất tôi có thể tái cấu trúc và tái tạo các tệp hbm, giảm thiểu điều chỉnh thủ công/tuỳ chỉnh ở cấp XML. –

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