• 1400/03/22
  • 0
  • 286
1400/03/22 |
backend

با سلام - عدم ذخیره شدن تغییرات پروفایل user ---

با عرض سلام و خسته نباشید 

 یک سرویس برای تغییرات اطلاعات کاربر مانند (fullname , email) نوشتم ... با کامپایل نمودن به صورت سطر به سطر اطلاعات را مشاهده می نماییم که تغییر یافته اما در جدول دیتابیس ذخیره نمی گردد. در واقع کد خط _Context.SaveChange(); عمل نمی کند... من در اینترفیس IDatabaseContext هم تابع Savechange اضافه کردم اما جواب نداد

using Application.Interfaces.Contexts;
using Common.Dto;
using Domain.User;
using Microsoft.AspNetCore.Identity;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Application.Services.Users
{
    public interface IUserProfileService
    {
        ResultDto UserProfileEdit(UserProfileDto UserProfileDto);
        ResultDto<UserProfileDto> UserProfileGet(string Username);
    }

    public class UserProfileService : IUserProfileService
    {
        public IDataBaseContext _Context { get; }
        public UserManager<User> _UserManger { get; }
        public UserProfileService(IDataBaseContext Context, UserManager<User> UserManger)
        {
            _Context = Context;
            _UserManger = UserManger;
        }

        public ResultDto UserProfileEdit(UserProfileDto UserProfileDto)
        {
            //این بخش چک می کند که اطلاعات ورودی خالی نباشد
            if (string.IsNullOrEmpty(UserProfileDto.FullName) || string.IsNullOrEmpty(UserProfileDto.Email))
            {
                return (new ResultDto
                {
                    IsSuccess = false,
                    Message = "لطفا اطلا عات درخواستی را تکمیل نمایید",
                });
            }

            var user = _UserManger.FindByNameAsync(UserProfileDto.UserName).Result;
            if (user != null)
            {
                user.FullName = UserProfileDto.FullName;
                user.Email = UserProfileDto.Email;
                _Context.SaveChanges();
                //var result = _Context.SaveChanges();

                return (new ResultDto
                {
                    IsSuccess = true,
                    Message = "اطلاعات با موفقیت ذخیره گردید",
                });
            }
            else
            {
                return (new ResultDto
                {
                    IsSuccess = false,
                    Message = "کاربر مورد نظر یافت نگردید",
                });
            }
        }

        public ResultDto<UserProfileDto> UserProfileGet(string Username)
        {
            //این بخش چک می کند که اطلاعات ورودی خالی نباشد
            if (string.IsNullOrEmpty(Username))
            {
                return (new ResultDto<UserProfileDto>
                {
                    IsSuccess = false,
                    Message = "لطفا اطلا عات درخواستی را تکمیل نمایید",
                    Data = null,
                });
            }

            var user = _UserManger.FindByNameAsync(Username).Result;
            if (user != null)
            {
                return (new ResultDto<UserProfileDto>
                {
                    IsSuccess = true,
                    Message = "اطلاعات کاربر دریافت گردید",
                    Data = new UserProfileDto
                    {
                        Email = user.Email,
                        FullName = user.FullName,
                        UserName = user.UserName,
                    },
                });
            }
            else
            {
                return (new ResultDto<UserProfileDto>
                {
                    IsSuccess = false,
                    Message = "اطلاعات کاربر یافت نگردید",
                    Data = null,
                });
            }
        }
    }


    public class UserProfileDto
    {
        [Display(Name = "نام کاربری")]
        public string UserName { get; set; }

        [Display(Name = "نام نام خانوادگی")]
        public string FullName { get; set; }

        [Display(Name = "ایمیل")]
        public string Email { get; set; }
    }
}
 


بنده سرویس را به شکل زیر تغییر دادم اما باز هم اطلاعات ذخیره نگردید

 

using Application.Interfaces.Contexts;
using Common.Dto;
using Domain.User;
using Microsoft.AspNetCore.Identity;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Application.Services.Users
{
    public interface IUserProfileService
    {
        ResultDto UserProfileEdit(UserProfileDto UserProfileDto);
        ResultDto<UserProfileDto> UserProfileGet(string Username);
    }

    public class UserProfileService : IUserProfileService
    {
        public IDataBaseContext _Context { get; }
        public IIdentityDataBaseContext _ContextIdentity { get; }
        public UserManager<User> _UserManger { get; }
        public UserProfileService(IDataBaseContext Context, IIdentityDataBaseContext ContextIdentity, UserManager<User> UserManger)
        {
            _Context = Context;
            _ContextIdentity = ContextIdentity;
            _UserManger = UserManger;
        }

        public ResultDto UserProfileEdit(UserProfileDto UserProfileDto)
        {
            //این بخش چک می کند که اطلاعات ورودی خالی نباشد
            if (string.IsNullOrEmpty(UserProfileDto.FullName) || string.IsNullOrEmpty(UserProfileDto.Email))
            {
                return (new ResultDto
                {
                    IsSuccess = false,
                    Message = "لطفا اطلا عات درخواستی را تکمیل نمایید",
                });
            }

            var user = _UserManger.FindByNameAsync(UserProfileDto.UserName).Result;
            if (user != null)
            {
                user.FullName = UserProfileDto.FullName;
                user.Email = UserProfileDto.Email;
                var result = _ContextIdentity.SaveChangesAsync().Result;
                //var result = _Context.SaveChanges();

                return (new ResultDto
                {
                    IsSuccess = true,
                    Message = "اطلاعات با موفقیت ذخیره گردید",
                });
            }
            else
            {
                return (new ResultDto
                {
                    IsSuccess = false,
                    Message = "کاربر مورد نظر یافت نگردید",
                });
            }
        }

        public ResultDto<UserProfileDto> UserProfileGet(string Username)
        {
            //این بخش چک می کند که اطلاعات ورودی خالی نباشد
            if (string.IsNullOrEmpty(Username))
            {
                return (new ResultDto<UserProfileDto>
                {
                    IsSuccess = false,
                    Message = "لطفا اطلا عات درخواستی را تکمیل نمایید",
                    Data = null,
                });
            }

            var user = _UserManger.FindByNameAsync(Username).Result;
            if (user != null)
            {
                return (new ResultDto<UserProfileDto>
                {
                    IsSuccess = true,
                    Message = "اطلاعات کاربر دریافت گردید",
                    Data = new UserProfileDto
                    {
                        Email = user.Email,
                        FullName = user.FullName,
                        UserName = user.UserName,
                    },
                });
            }
            else
            {
                return (new ResultDto<UserProfileDto>
                {
                    IsSuccess = false,
                    Message = "اطلاعات کاربر یافت نگردید",
                    Data = null,
                });
            }
        }
    }


    public class UserProfileDto
    {
        [Display(Name = "نام کاربری")]
        public string UserName { get; set; }

        [Display(Name = "نام نام خانوادگی")]
        public string FullName { get; set; }

        [Display(Name = "ایمیل")]
        public string Email { get; set; }
    }
}
 


سلام

شما از Usermangere استفاده میکنید بعد با _Context آن را ذخیره میکنید؟؟!!!!

باید از _userManager.UpdateAsync   استفاده کنید



پاسخی برای این باگ ارسال کنید

لطفا کدها را درون قطعه کد ارسال نمایید

برای ارسال پاسخ باید وارد حساب کاربری خود شوید
ورود به حساب کاربری