我想知道一些事情。我坐在这里有一个解决方案,我有 1 个具有 2 个子类的超类,我目前正在使用 JoinedSubClass 映射它,但我知道这个方法已经过时,并说我应该使用 ClassMap 和 SubClassMap,但如果我这样做AutoMapping 不起作用,我不希望这样。有什么解决方法吗?
这是层次结构:
public class Tag : Entity
{
public virtual string Name {get;set;}
public virtual User User {get;set;}
}
public class RespondentTag : Tag
{
public virtual IList<Respondent> Respondents {get;set;}
}
public class ArchiveTag : Tag
{
public virtual IList<Survey> Surveys {get;set;}
}
正如您可能已经发现的那样,我希望这是一个每个层次结构映射的表,其中包含具有多对多列表的子类。就像一个表'Tag',然后是 Tag_Respondent 和 Tag_Archive(用于多对多关系)。
这是我目前正在使用的映射:
public class TagMap : IAutoMappingOverride<Tag>
{
public void Override(AutoMapping<Tag> mapping)
{
//This is obsolete
mapping.JoinedSubClass("RespondentTagId", RespondentTagMap.AsJoinedSubClass());
mapping.JoinedSubClass("ArchiveTagId", ArchiveTagMap.AsJoinedSubClass());
}
}
public class RespondentTagMap
{
public static Action<JoinedSubClassPart<RespondentTag>> AsJoinedSubClass()
{
return part =>
part.HasManyToMany(x => x.RespondentList)
.Cascade
.SaveUpdate()
.Inverse()
.Table("Tag_Respondent");
}
}
public class ArchiveTagMap
{
public static Action<JoinedSubClassPart<ArchiveTag>> AsJoinedSubClass()
{
return part =>
part.HasManyToMany(x => x.Surveys)
.Cascade
.SaveUpdate()
.Inverse()
.Table("Tag_Archive");
}
}
有谁知道解决此问题的解决方法或其他解决方案?(不禁用自动映射)
任何答案将不胜感激。
提前致谢!