性能优先级低的情况下:
类方法中使用锁进行数据获取
private static object dblock = new object();
private static List<CarInfo> table_carInfos;
public static List<CarInfo> Table_carInfos
{
get
{
if (table_carInfos == null)
{
table_carInfos = new List<CarInfo>();
lock (dblock)
{
table_carInfos = carinfoService.GetModels(p => true).ToList();
}
}
return table_carInfos;
}
}
/// <summary>
/// 查询车辆信息并信息数据库插入
/// </summary>
/// <param name="iOCards"></param>
/// <param name="interfacelog"></param>
public static void InsertCarinfos(List<CarInfo> carInfos, List<Interfacelog> interfacelogs)
{
if (carInfos.Count > 0)
{
lock (dblock)
{
if (carinfoService.UpdateList(carInfos))
{
if (interfacelogService.loadDataOK(interfacelogs))
{
Table_carInfos.RemoveAll(p => carInfos.Select(p1 => p1.carID).Contains(p.carID));
Table_carInfos.AddRange(carInfos);
Table_interfacelogs.RemoveAll(p => interfacelogs.Select(p1 => p1.interfacelogID).Contains(p.interfacelogID));
Table_interfacelogs.AddRange(interfacelogs);
}
}
}
}
}
通过锁 保证同一时间尽可能只有一个现场方法访问类中任意属性方法,保证此数据库的工具类在执行BLL层的数据库增删改操作时由于线程冲突引发的savechange()方法报错的问题。
外部执行数据库操作通过此工具类方法执行具体操作数据库操作。此工具类将各个service层的方法进行统一管理,防止各个线程调用service引发savechange的问题