2010-11-06 36 views
6

Mục tiêu ở đây là có cấu hình cơ sở dữ liệu hoàn chỉnh và tạo lược đồ xử lý thông thạo nhibernate.Làm cách nào để chỉ định một chỉ mục nhiều cột với Fluent NHibernate

Có cách nào để chỉ định một chỉ mục nhiều cột với chế độ Thiếu thông thạo không?

Tôi hiểu rằng bạn có thể chỉ định một chỉ mục trên một tài sản duy nhất/cột

như vậy:

mapping.Map(x => x.ItemDt).Index("IX_DataTransferLog_ItemDt"); 

làm thế nào tôi có thể chỉ định nhiều cột?

Nếu điều đó là không thể, có cách thêm câu lệnh SQL thô vào cấu hình sẽ chạy sau khi lược đồ được tạo/cập nhật không?

Trả lời

12

Trong XML-ánh xạ này có thể đạt được bằng cách thêm chỉ số với cùng một tên cho tất cả các thuộc tính mà cần phải có trong chỉ mục:

<property name="Name" index="MyIndex" /> 
<property name="RunTimeInMinutes" index="MyIndex" /> 

Đáng tiếc là tôi không có bất kỳ dự án hiện đang sử dụng thành thạo NHibernate mà tôi có thể kiểm tra điều này, nhưng tôi nghĩ rằng công trình này trong thành thạo NHibernate theo cùng một cách:

mapping.Map(x => x.Name).Index("MyIndex"); 
mapping.Map(x => x.RunTimeInMinutes).Index("MyIndex"); 

Nếu điều này không làm việc, bạn có thể thêm các SQL liệu cần thiết để tạo ra các chỉ mục trong database-object trong bản đồ. NHibernate sẽ thực hiện SQL khi cơ sở dữ liệu được tạo bằng cách sử dụng SchemaExport. Tôi không biết nếu có phiên bản thông thạo để ánh xạ các đối tượng cơ sở dữ liệu nhưng bạn có thể ánh xạ database-object bằng cách sử dụng XML và thêm tệp ánh xạ vào cấu hình của Fluent NHibernate.

+1

Tôi đã thử nghiệm và thao tác này: ánh xạ.Map (x => x.Name) .Index ("MyIndex"); mapping.Map (x => x.RunTimeInMinutes) .Index ("MyIndex"); – Lance

+1

XÁC MINH. Tôi đã viết ra chỉ mục và nhận: SỬ DỤNG [NhibernateDB] GO /****** Đối tượng: Chỉ mục [IX_MyTable_ColumnA_And_ColumnB] ​​Ngày phát hành: 01/16/2012 17:26:57 ******/ CREATE nonclustered iNDEX [IX_MyTable_ColumnA_And_ColumnB] ​​ON [dbo]. [MyTable] ( \t [columnA] ASC, \t [columnB] ​​ASC ) GO – granadaCoder

+0

này là đúng và tốt, nhưng có một cách đơn giản để làm cho chỉ số độc nhất? –

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