我有一个类,我想以两种不同的方式映射到单个表,为了隐私的原因。比方说,类看起来是这样的:NHibernate:多个映射到单个表
class Person
{
public int ID { get; set; }
public string Name { get; set; }
// ... many other properties omitted ...
}
而相应的数据库表如下所示:
create table Person
(
ID int not null,
RealName nvarchar(512) not null,
FakeName nvarchar(512) not null,
-- many other columns omitted
)
两个映射我需要的是:
- 从名称属性真实姓名列
- 从名称属性别名真实列
所有其他属性都应该被映射在这两种情况下是相同的。我强烈希望不必重复这些其他属性的映射。
我尝试了几种不同的方法,没有运气。使用<联合子类>来隔离不同映射失败并出现此错误:DuplicateMappingException:重复表映射人员。我可以创建两个不同的数据库视图,并分别映射它们以避免重复的表映射错误,但这不是可取的。
使用“实体名称”属性来指定映射是诱人的,但记录不完善,似乎有一些主要缺点:a)它需要我重复所有其他映射为两个实体,并且b )它与来自指向Person类的其他类的多对一>关系不兼容。
有没有一个很好的方法来做到这一点,我失踪了?
这是一个很好的建议,但我不认为它适用于我,因为我无法从SQL中测试以确定正确的映射。我需要控制应用程序层内的映射。 – brianberns 2012-02-23 19:10:27