Ошибка ORMLite при вставке с автоинкрементным ключом

0

У меня есть следующая Model MVC 5:

[Schema("dbo")]
[Alias("map")]
public class Map {
    [PrimaryKey]
    [Alias("id")]
    public int Id { get; set; }

    [Alias("name")]
    public String Name { get; set; }

    //others

}

Атрибут id в таблице - это primary key autoincrement.

Мне нужно, чтобы Id выполнял операции обновления, но это мешает мне вставлять новые записи.

Это update работает:

var res = dbConnection.Update<Map>(map);

Хотя эта insert отсутствует:

var res = dbConnection.Insert<Map>(map, selectIdentity: true);

Я получаю это исключение:

Невозможно вставить явное значение для столбца идентификатора в таблице 'map', если для параметра IDENTITY_INSERT установлено значение OFF.

Что я могу сделать, чтобы решить эту проблему?

  • 0
    Итак, какова ценность map.Id ?
  • 0
    Это не имеет значения при вставке, потому что мне нужно, чтобы СУБД установила это в соответствии с текущим значением приращения
Показать ещё 7 комментариев
Теги:
asp.net-mvc
ormlite-servicestack

1 ответ

2
Лучший ответ

[AutoIncrement] указывает ORMLite опустить присвоенное поле из списка полей INSERT.

Поэтому примените его к свойству Id:

[PrimaryKey]
[AutoIncrement]
[Alias("id")]
public int Id { get; set; }

И его значение будет игнорироваться при вставке или обновлении этого объекта.

  • 1
    Отлично, еще раз спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню