LightSpeed 相关问题处理

解决SQL转换错误及优化代码效率
本文讨论了在使用LightSpeed配置时遇到的问题,特别是关于`identityMethod`属性的设置,以及如何避免将表达式转换为数据类型时出现算术溢出错误。通过实例代码分析,提供了解决方案并优化了代码执行效率。

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。

 

转载于:https://www.cnblogs.com/TiestoRay/p/4497752.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值