У меня есть проблема передачи правильных данных в мою базу данных SQL через мой веб -API ASP.NET Core 9C#

Место общения программистов C#
Ответить
Anonymous
 У меня есть проблема передачи правильных данных в мою базу данных SQL через мой веб -API ASP.NET Core 9

Сообщение Anonymous »

Я новичок в ASP.NET, поэтому мне трудно понять, в чем проблема. Категории .
элемент содержит идентификатор , name , description , количество , цена < /code> и categoryid .
категория содержит идентификатор и name .
< P> Вот проблема: когда будет представлен запрос на создание и элемент, по какой -то причине создается новая категория , то идентификатор новой категории используется в качестве категории для элемента . Это не должно произойти. Я не хочу создать новую категорию . Br/> Как видите, тело запроса содержит «CategoryId»: 2 и возвращаемое тело содержит «CategoryId»: 13
Здесь Экриншоты моих таблиц базы данных: < /p>
Таблица элементов < /p>
Таблица категорий < /p>
Как видите, Элементы Таблица имеет 13 в качестве категории и в таблице категорий есть новая строка с пустой строкой под именем .
Пожалуйста. Я пытаюсь учиться. Мой первый пост получил голосование в течение первой минуты, потому что в нем содержалось « много кода », и мне пришлось снять его, потому что это было не было достаточно. Полем Я просто пытался быть настолько подробным, насколько это возможно, чтобы показать, как я маршрутирую свой бэкэнд. < /P>
Я не уверен Много движущихся частей, и я все еще изучаю asp.net, так что я не уверен, что именно вызывает ошибку, но я постараюсь показать только то, что я думаю, актуально. < /p>
Здесь здесь также является ссылкой на репо, если вы хотели бы увидеть его полностью. >Models > Item.cs
public class Item
{
public int Id { get; set; }
public string Name { get; set; } = string.Empty;
public string Description { get; set; } = string.Empty;
public int Quantity { get; set; }
public decimal Price { get; set; }
[ForeignKey("CategoryId")]
public int CategoryId { get; set; }
public Category Category { get; set; } = new Category();
}
< /code>
Dtos > Item > ItemDto.cs
public class ItemDto
{
public int Id { get; set; }
public string Name { get; set; } = string.Empty;
public string Description { get; set; } = string.Empty;
public int Quantity { get; set; }
public decimal Price { get; set; }
public int CategoryId { get; set; }
}
< /code>
Dtos > Item > CreateItemDto.cs
public class CreateItemDto
{
public string Name { get; set; } = string.Empty;
public string Description { get; set; } = string.Empty;
public int Quantity { get; set; }
public decimal Price { get; set; }
public int CategoryId { get; set; }
}
< /code>
Repositories > ItemRepository.cs
public class ItemRepository : IItemRepository
{
private readonly ApplicationDBContext _context;
public ItemRepository(ApplicationDBContext context)
{
_context = context;
}
public async Task CreateAsync(Item itemModel)
{
await _context.Items.AddAsync(itemModel);
await _context.SaveChangesAsync();
return itemModel;
}
}
< /code>
Controllers > ItemRepository.cs
[Route("api/item")]
[ApiController]
public class ItemController : ControllerBase
{
private readonly IItemRepository _itemRepo;

public ItemController(IItemRepository itemRepo)
{
_itemRepo = itemRepo;
}

[HttpGet]
[Route("get/{id}")]
// This function will return a specific category from the database according to its Id
public async Task GetById([FromRoute] int id) {
var item = await _itemRepo.GetByIdAsync(id);
if(item == null) {
return NotFound();
}
return Ok(item.ToItemDto());
}

[HttpPost]
[Route("create")]
public async Task CreateAsync([FromBody] CreateItemDto itemDto) {
if(!ModelState.IsValid) {
return BadRequest(ModelState);
}

var itemModel = itemDto.ToItemFromCreate();
await _itemRepo.CreateAsync(itemModel);
return CreatedAtAction(nameof(GetById), new { id = itemModel.Id }, itemModel.ToItemDto());
}
}


Подробнее здесь: https://stackoverflow.com/questions/793 ... -asp-net-c
Ответить

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

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

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

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

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