Dưới đây là các lớp mô hình miền:NHibernate lập bản đồ với một hệ thống phân cấp lớp có cơ sở lớp học là trừu tượng và bộ phân biệt không phải là một chuỗi
public abstract class BaseClass
{
...
}
public class ChildClass : BaseClass
{
...
}
Lưu ý rằng các tầng lớp phụ huynh là trừu tượng và đây là những gì mang lại cho tôi một số khó khăn khi đến thời gian để bản đồ với nhibernate thông thạo. Kẻ phân biệt đối xử của tôi là một byte (nhỏ xíu trong DB). Bởi vì nó không phải là một chuỗi và tôi không thể quản lý để thiết lập một giá trị phân biệt trên lớp cơ sở, điều này không làm việc (lấy từ các lớp bản đồ cho BaseClass):
DiscriminateSubClassesOnColumn<byte>("Type")
.SubClass<ChildClass>()
.IsIdentifiedBy((byte)OperationType.Plan)
.MapSubClassColumns(p => { ... })
Thông báo lỗi tôi nhận được là:
Phương thức khởi tạo lớp UnitTest1.MyClassInitialize đã ném ngoại lệ. NHibernate.MappingException: NHibernate.MappingException: Không thể định dạng giá trị phân biệt đối xử thành chuỗi SQL của thực thể BaseClass ---> System.FormatException: Chuỗi đầu vào không đúng định dạng ..
Bài sau dường như giải thích điều gì xảy ra. Họ đưa ra một giải pháp với xml nhưng không phải với nhibernate thông thạo: http://forum.hibernate.org/viewtopic.php?t=974225
Cảm ơn sự giúp đỡ.
Cảm ơn bạn đã liên kết đến giải pháp với XML - chính xác những gì tôi cần! –