‫۱۰ سال و ۹ ماه قبل، سه‌شنبه ۲۴ دی ۱۳۹۲، ساعت ۱۵:۴۳
متوجه هستم که منشأ این حذف از کجاست، اما سوال من این است که چگونه میتوان بدون اینکار، یعنی حذف کردن و اضافه کردن مجدد لینکها در دیتابیس؛ بروز رسانی را انجام داد، تا در مواردی که تعداد و حجم این رکوردها بالاست، کارایی پایین نیاید؟(اگر تغییری در لینکها رخ نداده؛ اتفاقی نیافتد و چنانچه لینکی عوض شده، رکورد مربوطه درصورتی که از قبل در DB وجود داشته، ,Update شود و تنها اگر جدید است Insert شود؟)
‫۱۰ سال و ۹ ماه قبل، سه‌شنبه ۲۴ دی ۱۳۹۲، ساعت ۱۴:۳۵
بله همانطور که گفتم موقع ویرایش یک پست که قبلا برایش لینک دانلود ثبت شده، حتی اگر هیچ تغییری هم در لینکهای دانلود ندهیم، کوئری Insert صادر میشود.
این هم نمونه خروجی Sql تولید شده برای حالت فوق که توسط mini-profiler ایجاد شده:

و این هم کد متد UpdatePost:
public UpdatePostStatus UpdatePost(EditPostModel postModel)
        {
            Post selectedPost = _posts.Find(postModel.PostId);

            int count = selectedPost.Labels.Count;
            for (int i = 0; i < count; i++)
            {
                selectedPost.Labels.Remove(selectedPost.Labels.ElementAt(i));
                count--;
            }

            selectedPost.Labels = postModel.Labels;

            selectedPost.DownloadLinks = postModel.DownloadLinks;

            selectedPost.Body = postModel.PostBody;
            selectedPost.Book.Author = postModel.Book.Author;
            selectedPost.Book.ISBN = postModel.Book.ISBN;
            selectedPost.Book.Language = postModel.Book.Language;
            selectedPost.Book.Name = postModel.Book.Name;
            selectedPost.Book.Page = postModel.Book.Page;
            selectedPost.Book.Year = postModel.Book.Year;
            selectedPost.Book.Description = postModel.Book.Description;
            selectedPost.Book.Publisher = postModel.Book.Publisher;

            selectedPost.Book.Image.Description = postModel.BookImage.Description;
            selectedPost.Book.Image.Path = postModel.BookImage.Path;
            selectedPost.Book.Image.Title = postModel.BookImage.Title;

            selectedPost.CommentStatus = postModel.PostCommentStatus;
            selectedPost.Description = postModel.PostDescription;
            selectedPost.Keyword = postModel.PostKeyword;
            selectedPost.ModifiedDate = postModel.ModifiedDate;
            selectedPost.Status = postModel.PostStatus;
            selectedPost.Title = postModel.PostTitle;

            return UpdatePostStatus.Successfull;
        }