LINQ TO SQL使用上的一部分问题
Insert()与InsertRange()在数据插入过程中的差异:
Insert插入数据完成后,会返回自增的ID列的值;InsertRange插入完成数据后只会返回受影响的行数。
结果就是使用Insert插入的数据,在插入完成后无须再次查询便有ID的值,使用InsertRange插入的数据则需要自行查询更新绑定的数据。
FirstOrDefault()在使用过程中会遇到的问题:
var entity = ItemSource.FirstOrDefault(f => f.IsUse);
if (entity == null || entity.Count() == 0)
{
return;
}
筛选之后立马判断数据是否为空的时候,此时entity为空,但是不会进入下面的方法,除非打上断点,有等待操作时,才会正常进入下面的判断方法。这是由于FirstOrDefault()这个方法本身引起的问题,这个筛选的过程不是同步的,而是异步的,在不等待的情况下会造成以上的情况,此时的解决方案应该是:
var entity = ItemSource.Where(f => f.IsUse).FirstOrDefault();
if (entity == null || entity.Count() == 0)
{
return;
}

浙公网安备 33010602011771号