C # .Net Linq добавление новой записи с полем идентичности - PullRequest
0 голосов
/ 27 октября 2018

У меня есть таблица телефонных номеров из модели БД.Таблица имеет первичный ключ phoneId со значением "автоинкремента".Мне нужно вставить новую строку, но модельная версия таблицы не имеет пропускаемого элемента phoneId.Как мне указать, что новая запись должна получить следующий автоинкремент / идентификационный номер?

Я пытаюсь:

    var newPhone = new Phone() {
        PhoneId = null,
        PhoneNumber = newNumber
    };

    try {
        pdb.Phones.Add(newPhone);
        pdb.SaveChanges();
    } catch (Exception e) {
        Console.WriteLine("COULD NOT ADD new number: {0}", e.Message);
    }

в модели PhoneId это "длинный", а не "долго?".Я не хочу менять модель, если мне не нужно.Если я когда-нибудь пересоберу модель, я потеряю изменения и, возможно, забуду, зачем мне это нужно.

Я попытался продублировать класс модели Phone и установить для этой версии PhoneId значение nullable, но затем Linq.Add() метод отказался, потому что не смог преобразовать одно в другое.

Чего мне не хватает?

Ответы [ 2 ]

0 голосов
/ 28 октября 2018

Модель не имеет phoneID, потому что база данных установит значение при вставке записи.Первичный ключ также не может быть обнуляемым.

Подробнее о полях идентификации

Посмотрите на пример A: по ссылке выше ... вы увидите, что они опускаютПоле IDENTITY.

 var newPhone = new Phone(); 
 newPhone.PhoneNumber = newNumber;

 try 
 {
    pdb.Phones.Add(newPhone);
    pdb.SaveChanges();
 }
 catch (Exception e) 
 {
    Console.WriteLine("COULD NOT ADD new number: {0}", e.Message);
 }
0 голосов
/ 27 октября 2018

Вам не нужно устанавливать поле, Поле инициализируется при отправке модели

var newPhone = new Phone() {
        PhoneNumber = newNumber
    };

try {
    pdb.Phones.Add(newPhone);
    pdb.SaveChanges();
} catch (Exception e) {
    Console.WriteLine("COULD NOT ADD new number: {0}", e.Message);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...