Как заставить вставку Identity работать с моей моделью - PullRequest
0 голосов
/ 12 апреля 2019

Я пытаюсь разрешить пользователям создавать объекты "Комнаты".Они смогут добавлять предметы в комнату, а также удалять и создавать комнаты для своей учетной записи.

Моя таблица настроена так:

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 каждый раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...