C#, платформа объекта, автоматический инкремент

Я изучаю Платформу Объекта под 2010 VC#.

Я составил простую таблицу для изучения целей, одно из полей является "идентификационным" целым числом типа, набором идентификационных данных к истинному. Я генерировал Модель данных Объекта от той таблицы и соединил ее с dataGridView. Проблема состоит в том, что это не делает автоматического инкремента - каждая вставленная строка хочет быть id=0 (который невозможен, конечно, так как идентификатор должен быть уникальным),

Что я делаю неправильно? Как я должен настроить EF или сам дб SQL?

24
задан Paulie_D 25 September 2016 в 10:42
поделиться

4 ответа

Убедитесь, что в вашей модели EDMX для атрибута StoreGeneratedPattern поля автоинкремента установлено значение «Identity». Таким образом, EF знает, что автономные номера обрабатываются БД.

Здесь это объясняется лучше: Autonumber с Entity Framework

37
ответ дан 28 November 2019 в 23:37
поделиться

Идентификатор не устанавливается и увеличивается на единицу просто путем добавления в набор сущностей ... Сущность фактически не сохраняется в базе данных до тех пор, пока вы не вызовете context.SaveChanges () ...

db.AddToUserSet(user);//Added to EF entity collection
db.SaveChanges();//INSERT executed in db, Identity set and incremented.
2
ответ дан 28 November 2019 в 23:37
поделиться

Убедитесь, что вы сохраняете свои Сущности обратно в базу данных, прежде чем пытаться прочитать автоматически увеличивающееся значение Id.

Ваш идентификатор не будет автоматически увеличиваться до тех пор, пока он в первый раз не будет сохранен в базе данных.

1
ответ дан 28 November 2019 в 23:37
поделиться

Да. LINQ to SQL ведет себя аналогичным образом. Идентификатор не будет задан до тех пор, пока он не будет сохранен в базе данных. Пока вы этого не сделаете, все идентификаторы будут равны нулю (как вы уже видели).

1
ответ дан 28 November 2019 в 23:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: