Что не так с моим отображением, показанным ниже? Это проблема с GeneratedBy.Foreign ()? Как его использовать, потому что мой PK в UserTable (UID) также является FK, который относится к PersonTable PK (PID). Я получаю Дублирующую ошибку consoleMappingTest.SystemUser класса / сущности. что вы предлагаете (обязательно посмотрите на структуру базы данных - нет способа ее изменить). спасибо.
Структура наследования:
public class Person
{
public virtual int ID { get; set; }
}
public class User:Person
{
public override int ID
{
get
{
return base.ID;
}
set
{
base.ID = value;
}
}
public virtual string Name { get; set; }
public virtual int Salary { get; set; }
}
public class SystemUser:User
{
public virtual int Password { get; set; }
}
Структура базы данных:
для сохранения информации о человеке (некоторые поля здесь не показаны):
PersonTable(PID)
для сохранения пользователя и всех его подклассов, таких как системный пользователь:
UserTable(UID,Name,Salary,Type)
и вот мое отображение:
public class PersonMap : ClassMap<Person>
{
public PersonMap()
{
Table("PersonTable");
Id(x => x.ID, "PID").GeneratedBy.Assigned();//or HiLo-not important
}
}
public class UserMap : ClassMap<User>
{
public UserMap()
{
Table("UserTable");
DiscriminateSubClassesOnColumn("Type").Default("U");
Id(x => x.ID, "UID").GeneratedBy.Foreign("Person");//how should use this?
Map(x => x.Salary);
Join("PTable", j =>
{
j.KeyColumn("UID");
j.Map(x => x.Name);
});
}
}
public class SystemUserMap : SubclassMap<SystemUser>
{
public SystemUserMap()
{
DiscriminatorValue("SU");
Map(x => x.Password);
}
}