Специальный метод HTTP POST с условием ifC#

Место общения программистов C#
Anonymous
Специальный метод HTTP POST с условием if

Сообщение Anonymous »

Код: Выделить всё

public class User
{
public int Uid { get; set; }
public string? Name { get; set; }
public virtual ICollection Details { get; set; } = new List();
}

Код: Выделить всё

public class UserDetails
{
public int Did { get; set; }
public virtual User? User { get; set; }
public string? ShipToAddress { get; set; }
}
Существует 2 класса модели User и UserDetails с отношением от 1 до многих.
Мне нужно опубликовать данные пользователя и пользователя, но если Uid уже присутствует в базе данных, тогда публикуйте только данные UserDetails. .

Код: Выделить всё

[HttpPost]
public async Task AddUser(User ud)
{
await _context.User.AddAsync(ud);
await _context.SaveChangesAsync();
return Ok(ud);
}

Код: Выделить всё

[HttpPost]
public async Task AddUserDetails(UserDetails ud)
{
await _context.UserDetails.AddAsync(ud);
await _context.SaveChangesAsync();
return Ok(ud);
}
Мне нужно применить приведенную ниже логику в моем API.

Код: Выделить всё

var x = _context.User.FirstOrDefault(x => x.Uid == ud.Uid);

if (x.Value == null)
{
AddUser();
}
else
{
AddUserDetails();
}
Я пробовал описанную выше логику внутри AddUser, но каждый раз, если есть данные, выдает ошибку.

"Экземпляр объекта тип «Пользователь» не может быть отслежен, поскольку уже отслеживается другой экземпляр с тем же значением ключа для {'Uid'}. При присоединении существующих сущностей убедитесь, что присоединен только один экземпляр сущности с заданным значением ключа. Рассмотрите возможность использования «DbContextOptionsBuilder». EnableSensitiveDataLogging», чтобы увидеть конфликтующие значения ключей."


Подробнее здесь: https://stackoverflow.com/questions/791 ... -condition

Вернуться в «C#»