- 1400/03/22
- 0
- 283
با سلام - عدم ذخیره شدن تغییرات پروفایل 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; }
}
}
- 1400/03/22
بنده سرویس را به شکل زیر تغییر دادم اما باز هم اطلاعات ذخیره نگردید
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; }
}
}
- 1400/03/23
سلام
شما از Usermangere استفاده میکنید بعد با _Context آن را ذخیره میکنید؟؟!!!!
باید از _userManager.UpdateAsync استفاده کنید
پاسخی برای این باگ ارسال کنید
لطفا کدها را درون قطعه کد ارسال نمایید
برای ارسال پاسخ باید وارد حساب کاربری خود شوید
ورود به حساب کاربری