public bool EditTagPosition(Position position) { TagPosition tagPos = TagPositions.FindByCode(position.Tag);//判断是否存在实时数据 if (tagPos == null) { TagPosition tagPosition = new TagPosition(position); if (TagPositions.Add(tagPosition))//添加新的实时数据 { return(true); } else { ErrorMessage = Position.ErrorMessage; return(false); } } else { tagPos.Edit(position); if (TagPositions.Edit(tagPos))//修改实时数据 { return(true); } else { ErrorMessage = Position.ErrorMessage; return(false); } } }
public void AddTagPositionsByTags(List <Tag> tags) { List <TagPosition> tagPosList = TagPositions.ToList();//事先取出全部到内存中,比每次都到数据库中查询快很多。 100个从6.4s->1.8s,1.8s中主要是第一次查询的一些初始工作 List <TagPosition> newPosList = new List <TagPosition>(); foreach (Tag tag in tags) { //TagPosition tagPos = TagPositions.FindByCode(tag.Code);//100个要2s TagPosition tagPos = tagPosList.Find(i => i.Tag == tag.Code);//判断是否存在实时数据 if (tagPos == null) { TagPosition tagPosition = new TagPosition(tag.Code); newPosList.Add(tagPosition); } } //TagPositions.Db.BulkInsert(newPosList);//插件Z.EntityFramework.Extensions功能 //TagPositions.Db.BulkSaveChanges(); foreach (TagPosition tp in newPosList) { TagPositions.Add(tp); } }