Я пытаюсь разрешить пользователям создавать объекты "Комнаты".Они смогут добавлять предметы в комнату, а также удалять и создавать комнаты для своей учетной записи.
Моя таблица настроена так:
CREATE TABLE [dbo].[Rooms](
[Value] [money] NULL,
[Name] [nvarchar](50) NOT NULL,
[RoomID] [int] PRIMARY KEY IDENTITY(1,1) NOT NULL,
[User] [nvarchar](128) NOT NULL)
И мой код вставки вот так
[HttpPost]
public async Task<ActionResult> Create([Bind(Include = "Name, User,
RoomID")] Room room)
{
if (ModelState.IsValid)
{
using (var transaction = db.Database.BeginTransaction())
{
db.Database.ExecuteSqlCommand("SET IDENTITY_INSERT Rooms ON");
room.User = User.Identity.GetUserId();
db.Rooms.Add(room);
await db.SaveChangesAsync();
db.Database.ExecuteSqlCommand("SET IDENTITY_INSERT Rooms OFF");
transaction.Commit();
}
return RedirectToAction("Index");
}
return View(room);
}
Всякий раз, когда я пытаюсь добавить объектную комнату в свою базу данныхЯ оставляю RoomID неопределенным.Я ожидаю, что база данных автоматически увеличит ID, но выдает ошибку ....
Нарушение ограничения PRIMARY KEY 'PK__Rooms__328639191EFADF47'.Невозможно вставить дубликат ключа в объект 'dbo.Rooms'.Дубликат значения ключа (0).Оператор завершен.
Он устанавливает значение RoomID равным 0 каждый раз.