2010-02-23 39 views
5

Tôi có hai đối tượng là cha mẹ và một danh sách con. Trong bản đồ nhibernate thông thạo của tôi cho phụ huynh tôi muốn tải danh sách các trẻ em.Fluent Nibernate đặt mệnh đề where trong ánh xạ

Tuy nhiên tôi muốn điều này là có điều kiện, một cột trong bảng con được gọi là "IsDeleted" và tôi chỉ muốn trả lại các trẻ em trong đó "IsDeleted" là sai.

Có thể thiết lập ánh xạ để thực hiện việc này không? Nếu không phải là nó có thể làm điều đó trong chỉ tiêu chuẩn nhibernate?

Cảm ơn

Trả lời

11

Có, bạn có thể sử dụng Ràng buộc ở đâu trong chế độ NHibernate để lập bản đồ này. Somehting like:

HasMany(x => x.Children).Where("IsDeleted = 0"); 

Ràng buộc ở đâu nên sử dụng cú pháp SQL không HQL. Đối với các bảng cho phép xóa mềm, có thể dễ dàng hơn để ánh xạ chế độ xem lọc các bản ghi đã xóa.

+0

Cảm ơn, đó là những gì tôi cần nhưng làm cách nào để tôi chỉ định cột trong đối tượng cha mẹ để truyền cho trẻ? Nếu nó là một tham chiếu của nó một cái gì đó giống như Tài liệu tham khảo (a => a.Supplier) .Column ("SupplierNo"); nhưng HasMany không có thuộc tính Cột. – lancscoder

+0

Tôi không chắc tôi hiểu câu hỏi và tôi cần biết thêm về mô hình và cơ sở dữ liệu của bạn để đưa ra câu trả lời hay. HasMany có một phương thức KeyColumn nếu bạn hỏi làm thế nào để xác định cột FK trên một đối tượng con. –

+0

Không, tôi muốn chỉ định cột trên đối tượng mẹ vì nó không sử dụng khóa chính. Đối tượng cha mẹ của tôi có một pk, tên, id phụ, liên kết thứ cấp này với FK trong đứa trẻ. Tôi biết nó không phải là một thiết kế db tốt nhưng những gì tôi đã thừa hưởng. Vì vậy, khi tôi làm một HasMany của nó đi qua giá trị PK của tôi khi tôi muốn nó vượt qua ID thứ cấp của tôi. Cảm ơn – lancscoder

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