Tôi có một tình huống tương tự như mô tả trong Fluent NHibernate Mapping not on PK Fieldthành thạo NHibernate lập bản đồ trên nhiều lĩnh vực phi PK
Tuy nhiên, mối quan hệ giữa các bảng của tôi được mô tả theo nhiều cột chính phi chính. Hãy tưởng tượng tình huống Chris Meek nhưng nơi một Person
có JobType
và Code
rằng, cùng nhau, nên (xin lỗi, đó là một cơ sở dữ liệu di sản) duy nhất mô tả một Person
Person
------
Id PK
JobType
Code
Name
Order
-----
Id PK
Person_JobType
Person_Code
OrderDetails
Serhat Özgel của answer mô tả sử dụng PropertyRef
, nhưng tôi không thể tìm cách để làm điều đó riêng lẻ cho nhiều cột. Tôi đã thử tương tự như
class PersonMap : ClassMap<Person>
{
public PersonMap()
{
HasMany(p => p.Order)
.KeyColumns.Add("Person_JobType")
.PropertyRef("JobType")
.KeyColumns.Add("Person_Code")
.PropertyRef("Code")
}
}
Nhưng điều này rõ ràng là không làm việc, kể từ KeyColumns.Add()
lợi nhuận khác OneToManyPart
nên PropertyRef()
không được chạy chống lại cột cá nhân được bổ sung. Thứ hai PropertyRef()
chỉ đơn giản là ghi đè người đầu tiên, và tôi nhận được lỗi sau:
NHibernate.MappingException : collection foreign key mapping
has wrong number of columns: MyApp.Person.Order type: Int32
Tôi đã nhìn vào quá tải hình KeyColumns.Add(),
public TParent Add(string name)
public TParent Add(params string[] names)
public TParent Add(string columnName, Action<ColumnPart> customColumnMapping)
public TParent Add(ColumnMapping column)
Cụ thể, cuối cùng hai, nhưng không thể tìm thấy bất kỳ cách nào để đặt PropertyRef
từng cấp riêng lẻ cho mỗi cột: ( Có cách nào để làm điều đó không? Tôi có làm theo cách này không chính xác không?
Wow, đẹp. Những gì tôi đã kết thúc làm cho điều này đã không có một ánh xạ NHibernate giữa các lớp này, và chỉ cần giải nén các giá trị và ném chúng trở lại kho lưu trữ của lớp khác để có được các bản ghi thích hợp khi cần thiết - thay vì xấu xí. Tôi muốn tôi biết thủ thuật của bạn tuần trước :) –
Đây là lỗi tôi nhận được khi thử phương pháp này (không thể vượt qua nó): bất kỳ ánh xạ nào có thể không tạo thành một phần của thuộc tính – dreamerkumar
@VishalKumar hỏi tốt hơn và đăng một số câu hỏi mã? Có vẻ như tài sản cho propertyref là một tham chiếuBất kỳ thay vì Bản đồ – Firo