Невозможно вставить явное значение для столбца идентификаторов в таблицу «Сообщения», когда для IDENTITY_INSERT установлено значение OFF - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь обновить ConversationId в моей таблице пользователей и сообщений с новым идентификатором беседы, создаваемым в моем методе.

как только я пытаюсь сохранить изменения в базе данных, я получаю эту ошибку:

Невозможно вставить явное значение для столбца идентификаторов в таблицу «Сообщения», когда для IDENTITY_INSERT установлено значение OFF.

мои модели:

public class Conversation
{
    public int ConversationId { get; set; }
    public ICollection<User> Users { get; set; } = new Collection<User>();
    public ICollection<Message> Messages { get; set; } = new Collection<Message>();
}


public class Message
{
    [Key]
    public int MessageId { get; set; }

    public string MessageContent { get; set; }

    public DateTime DateCreated { get; set; }
}


public class NewMessageViewModel
{
    public Message Message { get; set; }

    public User Sender { get; set; }

    public User Receiver { get; set; }
}

public class User
{
    [Key]
    public int UserId { get; set; }

    public string Username { get; set; }

    public string FirstName { get; set; }

    public string LastName { get; set; }

    public ICollection<Message> Messages { get; set; } = new Collection<Message>();

}

и мой метод контроллера:

    public async Task<ActionResult> SendMessage([FromBody] NewMessageViewModel content)
    {

        var newMessage = new Message
        {
            MessageContent = content.Message.MessageContent,
            DateCreated = DateTime.Now

        };

        var newConversation = new Conversation
        {
            Users = { content.Sender, content.Receiver },
            Messages = { content.Message }
        };

        var conversations = _dbContext.Conversations;

        conversations.Add(newConversation);

        await _dbContext.SaveChangesAsync();
}
}
}

Итак, на первый взгляд кажется, что я неправильно разделяю разговоры? это не получение бесед. пользователей или бесед. сообщений. Но я не уверен, полностью ли это проблема, поскольку я смотрю так, что трудно быть объективным!

РЕДАКТИРОВАТЬ:

Просто глядя на то, что я прохожу в своем почтовом запросе:

{"message": {"messageId": 1, "messageContent": " HelloWord "," dateCreated ":" 2020-05-26T11: 56: 43.8901969 + 01: 00 "}," sender ": {" userId ": 2," username ":" Test "," firstName ":" Test " , "lastName": "Тест", "messages": null}, "Receiver": {"userId": 1, "username": "AndyStav", "firstName": "Andy", "lastName": "Stav" , "messages": null}}

, похоже, проблема в том, что я передаю значение идентификатору сообщения!

такой дурак, я использовал этот json ранний в некоторых тестах и ​​не вынимал его!

1 Ответ

0 голосов
/ 26 мая 2020
{
    "message": {
        "messageId": 1,
        "messageContent": "HelloWord",
        "dateCreated": "2020-05-26T11:56:43.8901969+01:00"
    },
    "sender": {
        "userId": 2,
        "username": "Test",
        "firstName": "Test",
        "lastName": "Test",
        "messages": null
    },
    "receiver": {
        "userId": 1,
        "username": "AndyStav",
        "firstName": "Andy",
        "lastName": "Stav",
        "messages": null
    }
}

моя json была проблемой !! забыл вынуть идентификатор из того места, где я использовал это раньше!

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