Tôi vừa chuyển sang chế độ Fluent NHibernate và tôi đã gặp sự cố và không tìm thấy bất kỳ thông tin nào về nó.Fluent NHibernate, làm việc với giao diện
Dưới đây là các trường hợp:
public class Field : DomainObject, IField
{
public Field()
{
}
public virtual string Name { get; set; }
public virtual string ContactPerson { get; set; }
public virtual bool Private { get; set; }
public virtual IAddress Address { get; set; }
}
IAddress là một giao diện được thực hiện bởi một lớp có tên Địa chỉ
public class Address : DomainObject, IAddress
{
public Address()
{
}
public virtual string City { get; set; }
public virtual string Country { get; set; }
public virtual string PostalCode { get; set; }
public virtual string StreetAddress { get; set; }
}
Dưới đây là file bản đồ của tôi cho cả hai lớp
CHỈ
public class AddressMap : ClassMap<Address>
{
public AddressMap()
{
WithTable("Addresses");
Id(x => x.Id, "Id").Access.AsCamelCaseField(Prefix.Underscore).GeneratedBy.Guid();
Map(x => x.City, "City");
Map(x => x.Country, "Country");
Map(x => x.PostalCode, "PostalCode");
Map(x => x.StreetAddress, "StreetAddress");
}
}
LĨNH VỰC
public class FieldMap : ClassMap<Field>
{
public FieldMap()
{
WithTable("Fields");
Id(x => x.Id, "Id").Access.AsCamelCaseField(Prefix.Underscore).GeneratedBy.Guid();
Map(x => x.Name, "Name");
Map(x => x.ContactPerson, "ContactPerson");
Map(x => x.Private, "Private");
References(x => x.Address, "AddressId").Cascade.Delete().Cascade.SaveUpdate();
}
}
Vì vậy, khi tôi cố gắng truy xuất một đối tượng lĩnh vực từ cơ sở dữ liệu của tôi, tôi nhận được một lỗi NHibernate mà nói rằng IAddress không được ánh xạ. Có cách nào để chỉ định NHibernate để sử dụng lớp Địa chỉ trong ánh xạ?
Vui lòng cho tôi biết nếu cần thêm thông tin.
Thanks a lot,
Charles
Bạn định hình mô hình phân cấp IAddress trong cơ sở dữ liệu như thế nào? Bảng mỗi phân cấp (một bảng chứa tất cả các loại địa chỉ), hoặc bảng theo từng lớp cụ thể? Bạn nói rằng bạn đã chuyển sang Fluent để đăng một bản đồ XML mẫu có thể giúp xác định những gì bạn đang cố gắng thực hiện. –
Trong thực tế, tôi chuyển từ ADO.NET Entity Framework sang Nhibernate với Fluent NHibernate. Trong cơ sở dữ liệu của tôi, có một bảng chứa tất cả các loại địa chỉ. Nhân tiện, tôi quyết định loại bỏ các giao diện đó, tôi nhận ra rằng nó vô dụng. Nhưng tôi nghĩ câu hỏi vẫn còn hợp lệ. Cảm ơn, Charles –