在插入期间,进程错误,名称无效错误。 Dapper正试图复数表名。
映射器类与模型位于同一名称空间中,以表格命名,模型缺少任何其他注释,即简单的POCO。
//record is an instance of DMPERQ.cs
var rqId = conn.Insert<DMPERQ>(record);
错误:
Invalid object name 'DMPERQs'
映射器类:
public class DMPERQMapper: ClassMapper<DMPERQ>
{
public DMPERQMapper(){
Table("DMPERQ");
Map(m => m.RQID).Column("RQID").Key(KeyType.Identity);
AutoMap();
}
}
答案 0 :(得分:1)
我认为问题是你的自定义类映射器永远不会被调用。你可以设置一个断点,你会发现它永远不会到达。
我试过这个,因为DapperExtensions自动使一个属性以“id”结尾并且int类型为一个标识字段(即使它不是),然后从insert sql中排除该属性。如果数据库需要提供一个值,这会导致一个丑陋的SQL错误。
我在复合表中遇到过这种情况,它有两个外键的复合键,但没有主标识键。从技术上讲,这是你应该做这些类型的表的方式,但DapperExtensions完全不喜欢它。
问题是如何保护和附加对ClassMapper实例的引用,我在任何人的文档中都没有看到任何指示如何执行此操作的内容。
我最后修改了DapperExtensions以解决我遇到的问题,你可能也必须这样做。
长期问题是:如何将自定义映射附加到DapperExtensions以及将代码放在何处?
某些解决方案表明放入了global.asax文件,但这不起作用。