1. 关于KeyTable
配置文件中有一个节点 lightSpeedContexts
该节点下存放的是一些使用LightSpeed的配置,如
<add name="myDB" connectionStringName="myDBCon" dataProvider="SqlServer2008" pluralizeTableNames="False" identityMethod="Guid" />
identityMethod 属性默认值是 KeyTable,如果使用这个属性值且表的Id都使用的Guid,则运行时会使用表KeyTable,将属性设为Guid即可解决这一问题。
2. 错误 【将 expression 转换为数据类型 nvarchar 时出现算术溢出错误。】
实例代码:
var list = DBHelper.CreateUnitOfWork().Query<User>() .Select(t => new UserInfo { DeptId = t.Id.ToString(), IsAdmin = true }).ToList();
其中User表的DeptId是Guid类型。
原因是该段代码转换成语句的时候DeptId转换方式出错,通过分析器获取的代码是这样的
CAST(User.DeptId AS NVARCHAR) AS [User.Id_CAST]
很显然,Guid转字符串的时候没有指定长度。
解决方案之一就是先使用ToList,再进行Select。