我在这里遇到类映射问题。我有四张桌子:
- 使固定
- 要求
- 控制
- 信息
Request
具有表的外键Fix
和Message
,而Control
具有 的外键Request
。基本映射工作正常,但我不想直接在类型Request
之间映射外键,因为我们不会使用此类 - 我们通过访问此消息表的各种视图进行所有插入和选择。要使用的视图将取决于存储在表中的值,例如,是一个视图(我们不使用所有字段,还有其他业务特定原因我们不想使用表)。Message
Message
Fix
Message101
Message
Message
对于指定的场景,基本思想是有这样的映射:
public class Request: Entity
{
public virtual short Number { get; set; }
public virtual Fix Fix { get; set; }
public virtual IMessage Message { get; set; }
}
是IMessage
由所有Message
类实现的接口。我尝试在Request
课堂上使用泛型,但无济于事。也许使用MappingOverride
可以帮助?
谢谢
编辑:
为了使用Any
,我将用于查找对象类型的值放在Request
表上,所以我的覆盖看起来像:
public override void OverrideMapping(IClassMapper<Request> __m)
{
__m.Any(x => x.Envio, typeof(long), m =>
{
m.IdType<long>();
m.MetaType<short>();
m.MetaValue(101, typeof(Message101));
m.Columns(id =>
{
id.Name("MessageId");
id.NotNullable(true);
}, classRef =>
{
classRef.Name("MessageType");
classRef.NotNullable(true);
});
m.Access(Accessor.Property);
m.Cascade(Cascade.None);
}
);
}
但我一直收到not-null property references a null or transient value
错误。有任何想法吗?