مرجع تخصصی برنامه نویسان

بزرگترین انجمن برنامه نویسان فارسی زبان

update کردن فقط یک فیلد

شنبه, 17 فروردین 1398 15:25

update کردن فقط یک فیلد

سلام

آموزشهای C# Advanced رو دیدم و واقعا استاد مدائنی عالی توضیح دادند و خیلی کمکم کرد.

اما به یک مشکل برخورد کردم و دیتاها رو از دست دادم و اون اینه که وقتی دارم update میکنم همه فیلدها رو update میکنه، در صورتی که من میخوام فقط همین سه تا فیلد رو تغییر بدم

و بقیه رکوردها null میشه

با این قطعه کد دارم عملیات UPdate رو انجام میدم

        private void UpdateDb(long id, long isSend, int LastReadReportReference)
        {
            using (UnitOfWork db = new UnitOfWork())
            {
                Person person = new Person()
                {
                    senttime = DateTime.Now.ToString(),
                    status = "sent",
                    reference = LastReadReportReference.ToString(),
                };
                person.id = id;
                db.SendRepository.Update(person);
                db.Save();
            }
        }

و کد GenericRepository

        public virtual void Update(TEntity entity)
        {
            //if (_db.Entry(entity).State == EntityState.Detached)
            //{
            //    _dbset.Attach(entity);
            //}

            _dbset.Attach(entity);
            _db.Entry(entity).State = EntityState.Modified;
        }

این کد رو چطور باید تغییر بدم؟

یکشنبه, 18 فروردین 1398 07:51

سلام

با توجه به کدی که شما نوشته بودی طبیعتا هم باید همین اتفاق بیفتد

کد زیر را مطالعه بفرما

 public bool Edit(T entity)
        {
            try
            {
                var exist = context.Set<T>().Find(entity.ID);
                if (exist != null)
                {
                    context.Entry(exist).CurrentValues.SetValues(entity);
                 context.SaveChanges();
                    return true;
                }
                else
                    return false;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

کسانی که از این پست تشکر کرده اند : hamzehsh,

ارسال پاسخ برای این تاپیک

ارسال پاسخ مخصوص اعضا سایت می باشد ! میتوانید با حساب کاربری خود وارد سایت شده یا ثبت نام کنید