Exemplo n.º 1
0
 public void Update(VisitLogType type, long ownerId, IUser user)
 {
     Parallel.Invoke(() =>
     {
         UpdateMethod(type, ownerId, user);
     });
 }
Exemplo n.º 2
0
        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
            }
        }