Tôi không chắc chắn làm thế nào để đặt câu hỏi, vì tôi không biết những gì tôi không biết, và do đó tôi không biết thuật ngữ thích hợp cho những gì tôi đang cố gắng để có được câu trả lời. Tôi sẽ giải thích kịch bản của tôi, với hy vọng rằng nó sẽ giúp:Thu nhỏ bộ sưu tập tra cứu NHibernate (nếu điều đó có ý nghĩa)
Tôi có ba bảng, một bảng Sách, một bảng Thẻ và một bảng tra cứu BookTag.
Mỗi sách có ID, Tiêu đề (cho người mới bắt đầu) Mỗi thẻ có ID và mỗi tiêu đề Mỗi thẻ sách có ID, ID BookID và TagID.
Sách có thể được gắn thẻ với nhiều thẻ và thẻ có thể được sử dụng trên nhiều ID BookID.
Tôi đã có thiết lập đối tượng của tôi theo cách này:
Book.cs
int BookID
string Title
List<BookTag> Tags
Tag.cs
int TagID
string Title
BookTag.cs
int ID
int BookID
int TagID
Tôi muốn lớp Books.cs để có một bộ sưu tập của Tags, và không BookTags, nhưng tôi dường như không thể có được ánh xạ đúng trong NHibernate. Đây là những gì tôi đã có cho các tập tin Book.hbm.xml:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="DomainModel" namespace="DomainModel.Books">
<class name="DomainModel.Books.Book" table="Books">
<id name="BookID" type="Int32" unsaved-value="0">
<generator class="native"/>
</id>
<property name="Title" type="String" not-null="true"/>
<set lazy="true" name="Tags" table="BookTags" generic="true" inverse="true" cascade="delete">
<key column="BookID"/>
<one-to-many class="DomainModel.Books.BookTag, DomainModel"/>
</set>
</class>
</hibernate-mapping>
Và đây là BookTag.hbm.xml tôi:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="DomainModel" namespace="DomainModel.Books">
<class name="DomainModel.Books.BookTag" table="BookTags">
<id column="BookTagID" name="BookTagID" type="Int32" unsaved-value="0">
<generator class="native"/>
</id>
<many-to-one name="Tag">
<column not-null="true" name="TagID"/>
</many-to-one>
<many-to-one name="Book">
<column not-null="true" name="BookID"/>
</many-to-one>
</class>
</hibernate-mapping>
Theo mô hình này, tôi có thể nhận được thẻ Tôi muốn bằng cách sử dụng mô hình đối tượng của tôi: Book.Tags [0] .Tag, nhưng điều đó dường như không hiệu quả. Tôi có thể sử dụng NHibernate để vạch ra BookTags.TagID với Tags.TagID trong cơ sở dữ liệu để tôi có thể lấy Book.Tags [0] để trả về một đối tượng Thẻ, thay vì một đối tượng BookTags không? Tôi không biết cách nào tốt hơn để liên kết Sách với thẻ để thẻ được sử dụng trên Book1 có thể được sử dụng trên Book2 mà không thêm mục nhập mới vào bảng Thẻ.
Tôi hy vọng điều này làm cho ít nhất một số ý nghĩa. Hãy cho tôi biết nếu bạn cần làm rõ thêm. Tôi sẽ đăng giải pháp của mình ở đây nếu tôi tìm ra giải pháp trước khi ai đó trả lời.
nhờ cho câu hỏi này !!!!! ~ –