最近在写一个小软件OPC客户端,数据库用是的sqlite,之前都是自己写一个sqlhelper来访问数据库,后面听说用linq不用写sql语名,用起来很方便,听别人说linq2db是一款轻量型的linq,于是通过nuget安装了linq2db,安装好配置好数据库的映射就可以用了。
发现用linq写数据库操作还真的是方便,写代码时有提示,编译通过了就肯定不会有问题了,不过在用的时候遇到一个问题,单条的增、删、改没有问题、但多条的增、删、必就不会了,一条条的操作的话很慢,效率很低,以前用sql语句时用事务的方法可以应对,现在用linq不会用了,在网上查了很多资料举的例子都是单条的增、删、改,没有讲事务的,后来在官网找到了,哎,资料还是官网全啊,不过要学好英语了。
不多说了上代码,这是我写的linq2db基于事务的数据库访问代码,请大家批评指正
DataDB db = new DataDB("ConnStr");
bool ExcuteSuccess = true;
db.BeginTransaction();//开始事务
try
{
foreach (OPCTag tag in tags)
{
db.TbSampleItemSendFail.Where(ts => ts.Pid == tag.ID).Delete();
}
}
catch (Exception ex)
{
ExcuteSuccess = false;
throw ex;
}
finally
{
if (ExcuteSuccess == false)
{
db.RollbackTransaction();//事务回滚
}
else
{
db.CommitTransaction(); //提交事务
}
}
return ExcuteSuccess;