LightSpeed 相关问题处理

时间:2023-08-09 16:01:14

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。