Специальный метод 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.Did == ud.Did);

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

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


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

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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