public void Update(VisitLogType type, long ownerId, IUser user) { Parallel.Invoke(() => { UpdateMethod(type, ownerId, user); }); }
private void UpdateMethod(VisitLogType type, long ownerId, IUser user) { if (ownerId == user.UserId) { return; } var intType = (byte)type; using (var db = DbInstance) { #region old //var vd = db.ViewData.FirstOrDefault(c => // c.ViewClass == intType // && c.ViewerId == myId // && c.OwnerId == ownerid // ); //if (null != vd) return; #endregion var x = db.Database.ExecuteSqlCommand( @"UPDATE [ViewData] SET ViewTime=getdate() WHERE Ownerid=@p0 AND Viewerid=@p1 AND ViewClass=@p2" , ownerId, user.UserId, intType); if (x == 0) { db.Database.ExecuteSqlCommand( @"INSERT INTO ViewData(Viewerid, Ownerid, ViewTime,viewclass)VALUES(@p0,@p1, getdate(),@p2)" , user.UserId, ownerId, intType); } #region UPDATE Details switch (type) { case VisitLogType.Profile: db.Database.ExecuteSqlCommand( @"UPDATE [profile] SET ViewCount+=1 WHERE [profile].UserId=@p0", ownerId); break; case VisitLogType.Group: db.Database.ExecuteSqlCommand( @"UPDATE [group] SET ViewCount+=1 WHERE Id=@p0", ownerId); break; case VisitLogType.Note: db.Database.ExecuteSqlCommand( @"UPDATE [Note] SET ViewCount+=1 WHERE Id=@p0", ownerId); break; default: break; } //更新相关数据完毕 #endregion #region old //var vds = db.ViewData.Where(c => c.OwnerId == ownerid && // c.ViewClass == intType) // .OrderByDescending(c => c.ViewTime) // .Take(50); //var v = vds.LastOrDefault(); //if (null != v) //{ // v.ViewerId = myId; // v.ViewTime = DateTime.Now; //} //#region sql //// var num = //// DataBaseExecutor.Execute( //// @"UPDATE [ViewData] ////SET ViewTime = @now,Viewerid = @viewerid ////WHERE ID IN (SELECT top (1) [id] FROM ViewData ////WHERE Ownerid = @ownerid AND ViewClass = @viewclass ////order by ViewTime) ////and ////@num < All(SELECT count(1) FROM ViewData WHERE ////Ownerid = @ownerid and viewclass=@viewclass)" //// , "@now", DateTime.Now //// , "@ownerid", ownerid //// , "@viewerid", CHUser.UserId //// , "@viewclass", type //// , "@num", 50 //// ); //#endregion //db.SaveChanges(); #endregion } }