0
我的映射出現了什麼問題?這是GeneratedBy.Foreign()的問題嗎?我該如何使用它,導致我在UserTable(UID)中的PK也是引用PersonTable PK(PID)的FK。我得到Duplicate類/實體映射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);
}
}