我正在努力寻找能够覆盖我的实体的自动映射的解决方案。FluentNHibernate - 覆盖已经存在的自动映射
执行流程是首先发生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();
}
}
我得到NHibernate的错误与NpgsqlParameterCollection
(索引超出范围)。
这可能是因为mapping.Map
函数只是向集合添加另一个映射,而不是覆盖已存在的映射(我检查了FluentNHibernate源代码)。
什么是使用IAutoMappingOverride
重写Sql类型的正确方法?