![]() |
Модераторы: gambit |
![]() ![]() ![]() |
|
RWander |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 349 Регистрация: 4.5.2006 Где: Russia.Udm.Izhevs k Репутация: нет Всего: 6 |
начал изучать LINQ.
Создал таблицу:
Создаю класс, который будет хранить одну строку таблицы Student:
теперь пытаюсь добавить новую строку в таблицу:
выдает ошибку:
не могу понять, где ошибка Это сообщение отредактировал(а) RWander - 29.12.2007, 09:40 -------------------- Microsoft Certified Technology Specialist - ASP.NET Applications |
||||||||
|
|||||||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
Автоинкрементное оно у тебя в СУБД. |
|||
|
||||
RWander |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 349 Регистрация: 4.5.2006 Где: Russia.Udm.Izhevs k Репутация: нет Всего: 6 |
если я пишу
то выдается та же ошибка -------------------- Microsoft Certified Technology Specialist - ASP.NET Applications |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 8 Всего: 232 |
Попробовать -1 или 0.
-------------------- ![]() |
|||
|
||||
RWander |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 349 Регистрация: 4.5.2006 Где: Russia.Udm.Izhevs k Репутация: нет Всего: 6 |
Если вы имеете ввиду присвоить ID = -1, то все равно та же ошибка -------------------- Microsoft Certified Technology Specialist - ASP.NET Applications |
|||
|
||||
JimCary |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 28.1.2008 Репутация: нет Всего: нет |
А не существует ли возможности при создании класса Student задать, что поле ID автоинкрементное, может тогда все заработает.
|
|||
|
||||
bullterier |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 15.2.2008 Репутация: нет Всего: нет |
попробуй в атрибуте [Column(....)] добавить : IsDbGenerated = true
|
|||
|
||||
xni |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 27.10.2006 Где: Обнинск Репутация: нет Всего: нет |
Аналогичная ошибка. Вы разобрались?
Вот что интересно -- просматриваю лог свего DataContext и вот что вижу:
В таблице всего 2 поля: ID (счётчик) и Statis_name (текст). Может быть дело в том, что я работаю с базой данных Access? Может с SQL Server будет иначе? Это сообщение отредактировал(а) xni - 24.7.2008, 16:04 |
|||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
Судя по всему, в базе Id объявлен как Identity. Тогда при объявлении Id не хватает атрибута IsDbGenerated (обратите внимание на примечание и пример). А в этом же примере происходит следующее: 1. При создании объекта сущности в Id хранится 0 (значение по умолчанию для int) 2. При добавлении сущности составляется запрос на вставку значений во все поля, кроме тех, которые помечены атрибутом IsDbGenerated. Т. к. Id не помечен этим атрибутом, получится примерно следующий запрос:
3. Естественно, на попытку вставить значение в Identity поле Sql Server среагирует Exception'ом. xni, Вы тоже ручками генерировали модель? Генерируйте дизайнером, не усложняйте себе жизнь. Если Вы только начинаете проект или изучаете для себя, взгляните лучше на Entity Framework. Гораздо более мощная и перспективная ORM. |
|||
|
||||
xni |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 27.10.2006 Где: Обнинск Репутация: нет Всего: нет |
Благодарю!
А со своей проблемой, я кажется, разобрался -- не знаю верно ли я понял или нет, но в Access 2007 поле типа "счётчик" всё равно трбует заполнения. Когда было выставлено IsDbGenerated = true оно не передавало значение счётчика, из-за чего возникала ошибка. Теперь ввожу ID вручную. Это неудобно, но работает... |
|||
|
||||
PashaPash |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 8 Всего: 49 |
xni, Linq to SQL вроде не поддерживает access вообще. Странно что хоть как-то работает.
|
|||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
Если Вы используете Access, то Вам прямая дорога к Entity Framework или nHibernate.
Поддерживает. Правда с рядом ограничений. Вот здесь есть обсуждение: http://forums.microsoft.com/MSDN/ShowPost....79&SiteID=1 Фишка в том, чтобы передать конструктору DataContext'а OleDbConnection. Правда, т. к. это нечто вроде workaround'а, стабильная работа не гарантируется: в частности, не поддерживаются некоторые типы. Это сообщение отредактировал(а) Idsa - 25.7.2008, 15:56 |
|||
|
||||
PashaPash |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 8 Всего: 49 |
Можно заставить заработать - еще не значит что он поддерживает. По ссылке же прямо так и написано. Т.е. что-то работать будет, но в живом проекте лучше не использовать. |
|||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
PashaPash, я же так и написал: есть ряд ограничений. Естественно, в реальных проектах использовать Linq To Sql с Access не имеет смысла.
|
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Базы данных под .NET | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |