Я думаю, что, вероятно, знаю, что наиболее распространенным предложением будет «изменить схему базы данных», но, к сожалению, это одна из тех ситуаций, когда «я застрял с устаревшей базой данных».
В основном я хочу сопоставитьследующее с использованием Fluent NHibernate
CREATE TABLE Person (PersonId int)
CREATE TABLE Organisation (OrganisationId int)
CREATE TABLE OwnedPhoneNumber (Id int, PersonId int, OrganisationId int,
PhoneNumber varchar(50))
interface IPhoneNumberOwner
{
int Id {get; set;}
}
class Person : IPhoneNumberOwner
{
public virtual int Id {get; set;}
public virtual ISet<OwnedPhoneNumber> PhoneNumbers {get; set;}
}
class Organisation : IPhoneNumberOwner
{
public virtual int Id {get; set;}
public virtual ISet<OwnedPhoneNumber> PhoneNumbers {get; set;}
}
class OwnedPhoneNumber
{
public virtual int Id {get; set;}
public virtual IPhoneNumberOwner Owner {get; set;}
public virtual string PhoneNumber {get; set;}
}
Мой вопрос заключается в том, как создать файл ClassMap для класса OwnedPhoneNumber, чтобы определить столбец для использования при сохранении сущности, т. е. если это объект Person, используйте столбец PersonId и еслиэто организация, использующая столбец OrganisationId.Сопоставление коллекций из родительских классов не является проблемой.
Надеюсь, я включил достаточно подробностей, чтобы объяснить проблему, но, конечно, выкрикните, если нет.