#c# #.net #entity-framework #asp.net-core #entity-framework-core
#c# #.net #структура организации #asp.сетевое ядро #сущность-структура-ядро
Вопрос:
Ниже приведен мой код для добавления новых записей в БД. Я использую ядро EF.
В своем коде я сначала проверяю, есть ли существующие данные идентификатора пользователя в базе данных или нет, если есть данные, то они должны обновить запись, в противном случае она должна быть создана.
Но моя проблема в том, что каждый раз, когда он добавляет новую запись вместо обновления существующей … любая идея по этому поводу.
Ниже приведен мой код :
public async Tasklt;intgt; Create(UserPreference _object) { var userPreferenceDetails = applicationDbContext.UserPreferences.Where(x =gt; x.UserId == _object.UserId).FirstOrDefault(); if(userPreferenceDetails != null) { if (_object.Image != null) { var webRootPath = hostingEnv.WebRootPath; var fileName = Path.GetFileName(_object.Image.FileName); var filePath = Path.Combine(hostingEnv.WebRootPath, "images\User", fileName); using (var fileStream = new FileStream(filePath, FileMode.Create)) { await _object.Image.CopyToAsync(fileStream); } userPreferenceDetails.ImagePath = filePath; //_object.ImagePath = filePath; } userPreferenceDetails.Name = _object.Name; userPreferenceDetails.Location = _object.Location; userPreferenceDetails.DateOfBirth = _object.DateOfBirth; userPreferenceDetails.AboutMe = _object.AboutMe; userPreferenceDetails.MatchPreference = _object.MatchPreference; userPreferenceDetails.PlayScore = _object.PlayScore; userPreferenceDetails.LocationPreference = _object.LocationPreference; var obj = applicationDbContext.UserPreferences.Update(_object); return applicationDbContext.SaveChanges(); } else { if (_object.Image != null) { var webRootPath = hostingEnv.WebRootPath; var fileName = Path.GetFileName(_object.Image.FileName); var filePath = Path.Combine(hostingEnv.WebRootPath, "images\User", fileName); using (var fileStream = new FileStream(filePath, FileMode.Create)) { await _object.Image.CopyToAsync(fileStream); } _object.ImagePath = filePath; } var obj = await applicationDbContext.UserPreferences.AddAsync(_object); return applicationDbContext.SaveChanges(); } }
Ответ №1:
попробуйте это
if(_object.UserId gt; 0) { var userPreferenceDetails = applicationDbContext.UserPreferences.Where(x =gt; x.UserId == _object.UserId).FirstOrDefault(); if(userPreferenceDetails == null) return 0; if (_object.Image != null) { ....your code } userPreferenceDetails.Name = _object.Name; userPreferenceDetails.Location = _object.Location; userPreferenceDetails.DateOfBirth = _object.DateOfBirth; userPreferenceDetails.AboutMe = _object.AboutMe; userPreferenceDetails.MatchPreference = _object.MatchPreference; userPreferenceDetails.PlayScore = _object.PlayScore; userPreferenceDetails.LocationPreference = _object.LocationPreference; } else { if (_object.Image != null) { ...your code } applicationDbContext.UserPreferences.Add(_object); } var result= await applicationDbContext.SaveChangesAsync(); return result; }