2009-02-13 33 views
7

Im sử dụng AutoPersistenceModel trong thành thạo NHibernate để lập bản đồ tất cả các đơn vị của tôi và rằng tất cả hoạt động tốt: Dthành thạo NHibernate nhiều nhiều ước cho loại

Tuy nhiên, một số đối tượng của tôi có

public virtual IList<Comment> Comments { get; set; } 

Trong cơ sở dữ liệu có một bảng bình luận duy nhất, và mỗi thực thể với mã trên, có bảng liên kết riêng của nó để nhận xét.

Tại thời điểm những gì im làm là:

public class ContractMappingOverride : IAutoMappingOverride<Contract> 
{ 
    public void Override(AutoMap<Contract> mapping) 
    { 
     mapping.HasManyToMany(x => x.Comments) 
      .WithTableName("Comment_Contract"); 

cho mỗi thực thể.

Có cách nào để tôi có thể đặt quy ước trong đó tất cả ánh xạ tới IList < Nhận xét > được tự động kết nối với nhiều công ty với quy ước tên bảng trên không?

Cảm ơn

Andrew

Trả lời

5

Tôi biết nó không phải những gì bạn muốn nghe, nhưng câu trả lời là không. Trong thiết kế hiện tại của Fluent NHibernate, không có cách nào áp dụng các quy ước cho các bộ sưu tập trong khi có kiến ​​thức về các loại chúng đang được sử dụng, bạn có thể áp dụng điều gì đó cho tất cả các bộ sưu tập. . Đây là một lỗ hổng trong thiết kế của chúng tôi và tôi nhằm mục đích sửa lỗi này, nhưng nó là một thay đổi khá lớn nên nó sẽ không xảy ra qua đêm.

Tôi khuyên bạn nên đăng ký bằng mailing list của chúng tôi, chúng tôi thường đăng nội dung cập nhật tại đó.

Rất tiếc, tôi không thể hữu ích hơn.

+1

Đủ công bằng, cảm ơn thông tin. Tôi sẽ kiểm tra nguồn và xem liệu tôi có thể đặt một miếng vá với nhau không 'cos tôi thực sự thích chức năng này. –

+0

Tôi đã thêm câu trả lời cho câu hỏi này James, Thật tuyệt vời nếu bạn có thể thêm nhận xét nếu giả định của tôi là chính xác hoặc nếu tôi rời khỏi cơ sở. –

+1

Tôi nghĩ điều hữu ích sẽ là có phiên bản Ghi đè <> không chung chung. Bằng cách đó nó sẽ là tương đối dễ dàng để làm một số overrides quy ước dựa trên bằng cách sử dụng phản ánh để quay qua tài sản. –

0

Đã một thời gian kể từ khi tôi làm việc với Fluent NHibernate và hiện tại tôi đang quay trở lại với nó (wow đã có rất nhiều thay đổi kể từ đầu 09!) Và tôi nghĩ câu trả lời cho câu hỏi của bạn bây giờ là có, bạn có thể làm điều này với chức năng OverideAll.

Hãy xem Overrides trên wiki FNH.

+0

Thật không may tôi nghĩ rằng OverrideAll chỉ có thể (hiện tại) được sử dụng để bỏ qua các thuộc tính trên bất kỳ thực thể nào, không phải cho những gì Andrew đang tìm kiếm. –

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