Я изучаю Платформу Объекта под 2010 VC#.
Я составил простую таблицу для изучения целей, одно из полей является "идентификационным" целым числом типа, набором идентификационных данных к истинному. Я генерировал Модель данных Объекта от той таблицы и соединил ее с dataGridView. Проблема состоит в том, что это не делает автоматического инкремента - каждая вставленная строка хочет быть id=0 (который невозможен, конечно, так как идентификатор должен быть уникальным),
Что я делаю неправильно? Как я должен настроить EF или сам дб SQL?
Убедитесь, что в вашей модели EDMX для атрибута StoreGeneratedPattern поля автоинкремента установлено значение «Identity». Таким образом, EF знает, что автономные номера обрабатываются БД.
Здесь это объясняется лучше: Autonumber с Entity Framework
Идентификатор не устанавливается и увеличивается на единицу просто путем добавления в набор сущностей ... Сущность фактически не сохраняется в базе данных до тех пор, пока вы не вызовете context.SaveChanges () ...
db.AddToUserSet(user);//Added to EF entity collection
db.SaveChanges();//INSERT executed in db, Identity set and incremented.
Убедитесь, что вы сохраняете свои Сущности обратно в базу данных, прежде чем пытаться прочитать автоматически увеличивающееся значение Id.
Ваш идентификатор не будет автоматически увеличиваться до тех пор, пока он в первый раз не будет сохранен в базе данных.
Да. LINQ to SQL ведет себя аналогичным образом. Идентификатор не будет задан до тех пор, пока он не будет сохранен в базе данных. Пока вы этого не сделаете, все идентификаторы будут равны нулю (как вы уже видели).