【发布时间】:2013-03-09 15:27:30
【问题描述】:
我正在努力寻找能够覆盖我的实体的自动映射的解决方案。
执行流程是先发生AutoMapping(使用约定),然后执行映射覆盖。
我的实体“签名”已经被 automapper 映射(不要与 Automapper 库混淆!),我想更改某些列的 db 类型。
如果我这样做:
public class SignatureMap : IAutoMappingOverride<Signature>
{
public void Override(AutoMapping<Signature> mapping)
{
mapping.Map(x => x.SignType).CustomSqlType("character varying");
mapping.Map(x => x.Status).CustomSqlType("integer").Nullable();
}
}
在尝试对表执行插入操作时,我收到 NpgsqlParameterCollection 的 NHibernate 错误(索引超出范围)。
这可能是因为mapping.Map 函数只是向集合添加了另一个映射,而不是覆盖已经存在的映射(我检查了 FluentNHibernate 源代码)。
使用IAutoMappingOverride 覆盖Sql 类型的正确方法是什么?
【问题讨论】:
标签: postgresql fluent-nhibernate fluent-nhibernate-mapping