2009-03-25 21 views
6

Chỉ cần bắt đầu học NHiberate. Có vẻ khá tẻ nhạt khi viết các tệp cấu hình hbm.xml thích hợp cho mỗi bảng cơ sở dữ liệu.Sử dụng NHibernate với Codesmith để tạo ORM

Câu hỏi có thể NHibernate đọc vào bảng và tự động truy xuất mối quan hệ và cần cấu hình tệp cũng như các lớp trình ánh xạ cơ sở dữ liệu cho bạn? Dường như các lập trình viên vẫn phải làm rất nhiều công việc nền tảng ban đầu. Sau đó, tôi đi qua Codesmith có mẫu cho NHiberate? Nó có lấp đầy khoảng trống không?

Trả lời

4

Bạn có thể sử dụng mẫu mã, nhưng điều này vẫn tạo ra IMHO đau. Cách tốt nhất là sử dụng Fluent nHibernate. Họ có tính năng tự động lập bản đồ mới, sử dụng cấu hình theo quy ước. Không có tệp ánh xạ, nó chỉ làm cho các giả định rằng bạn sử dụng các tên tương tự và có thể xác định các quy tắc về cách chuyển đổi tên thực thể thành tên bảng.

1

Tạo mã có thể lấp đầy khoảng trống đó thực sự tốt, tôi bắt đầu sử dụng CodeSmith, nhưng sau đó họ đã thực hiện một mục trả tiền để tôi chuyển sang MyGeneration. Cách tiếp cận của tôi là tấn công DB trước tiên, mã gen các tệp Ánh xạ và các lớp gen nếu chúng chưa tồn tại. Điều đó thực sự nhanh chóng, tuyệt vời cho một nguyên mẫu và tạo dữ liệu thử nghiệm.

Các tệp ánh xạ, các lớp và DB thường được thay đổi bằng tay. Trong một số trường hợp, tôi đã cố gắng tạo mã để hoạt động như một phần của CI - nhưng nó đã được chứng minh là khó thực hiện điều đó, trừ khi bạn bị kỷ luật về nơi bạn là một phần thay đổi mã thủ công. Các lớp học một phần là một trợ giúp, nhưng vẫn là một câu hỏi để có được toàn bộ nhóm trên cùng một trang, không ai thích có mã của họ bị ghi đè bởi một công cụ, ngay cả khi bạn có thể rollback và hợp nhất.

+0

dự án cuối cùng tôi chơi lúc đó mã được sử dụng gen'ed tắt gen đang nửa chừng khi chúng ta không thể tiếp tục cập nhật các máy phát điện đủ nhanh .... – JoshBerke

+0

Trong ý kiến ​​của bạn, ngoài việc được tự do, liệu MyGeneration có phải là một bộ gen tốt hơn? – devXen

+0

Không có đủ kinh nghiệm với CodeSmith hoặc những người khác, tôi thấy nó kỳ quặc nhưng tốt. Bây giờ nó là mã nguồn mở, và các mẫu được viết bằng C# - tất cả đều là các điểm cộng. – MrTelly

1

Tôi làm việc cho CodeSmith ... Xin lưu ý rằng MyGeneration đã không được cập nhật vĩnh viễn có nghĩa là nó cũng thiếu hỗ trợ. CodeSmith hỗ trợ đầy đủ các sản phẩm và mẫu của nó. Điều này có nghĩa là bất kỳ lỗi mẫu nào cũng sẽ được Cố định và xác minh bởi Codesmith.

Cảm ơn

-Blake Niemyjski

+0

Mặc dù tôi đồng ý rằng MyGeneration chưa được cập nhật theo độ tuổi, với mục đích tiết lộ đầy đủ, bạn cần lưu ý rằng bạn là nhà phát triển tích cực trên CodeSmith. – furtive

+0

Vâng, điều này đúng. Tôi đã cập nhật hầu hết các bài đăng của mình để chỉ ra điều đó. –

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