我无法控制数据库架构并具有以下(简化)表结构:
我有一个.Net枚举和类封装了这个地段:
public enum Scope { Region, Country, City }
public class Profile {
public Scope Scope { get; set; }
public int Id { get; set; }
public string Name { get; set; }
}
我正在寻找一种机制,允许我映射到正确的表,如:
public class ProfileMap : ClassMap<Profile> {
public ProfileMap() {
switch (x => x.Scope) { // <--Invalid code here!
case Scope.City: Table("CityProfile"); break;
case Scope.Country: Table("CountryProfile"); break;
case Scope.Region: Table("RegionProfile"); break;
}
Id(x => x.Id);
Map(x => x.Name);
}
}
或者我接近了这个错误?
答案 0 :(得分:2)
鉴于数据库架构已修复,我将这些作为3个单独的类映射,并作为any引用映射到公共接口。
class Foo
{
public virtual IProfile Profile { get; set; }
}
public class FooMap : ClassMap<Foo>
{
public FooMap()
{
ReferencesAny(m => m.Profile)
.EntityTypeColumn("ProfileType")
.EntityIdentifierColumn("ProfileId")
.AddMetaValue<CityProfile>("CityProfile")
.AddMetaValue<CountryProfile>("CountryProfile")
.AddMetaValue<RegionProfile>("RegionProfile")
.IdentityType<int>();
}
}