В таблице SQL установлено свойство автоинкремента для первичного ключа AnnotationID типа INT.
Код службы WCF приложения Silverlight:
public void InsertImageAnnotation(int imageId, string imagePath)
{
DataClassDataContext db = new DataClassDataContext();
ImageAnnotation row = new ImageAnnotation();
row.ImageID = imageId;//foreign key
row.ImagePath = imagePath;
db.ImageAnnotations.InsertOnSubmit(row);
db.SubmitChanges();
}
Исключение выдается в db.SubmitChanges () с сообщением: Невозможно вставить явное значение для столбца идентификатора в таблице ImageAnnotations, когда для IDENTITY_INSERT установлено значение OFF.
Я не указываю первичный ключ, который должен быть ключом идентификации, потому что я ожидаю, что БД позаботится об автоматическом увеличении значения первичного ключа.
Сценарий создания таблицы находится здесь:
USE [ImagingSericesDB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo]. [ImageAnnotations] (
[AnnotationID] [int] IDENTITY(0,1) NOT NULL,
[ImageID] [int] NOT NULL,
[ImagePath] [text] NULL,
CONSTRAINT [PK_ImageAnnotations] ПЕРВИЧНЫЙ КЛЮЧ КЛАСТЕРНЫЙ
(
[AnnotationID] ASC
)
С (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [ОСНОВНОЙ]
) ВКЛ [ПЕРВИЧНЫЙ] TEXTIMAGE_ON [ПЕРВИЧНЫЙ]
GO
ALTER TABLE [dbo]. [ImageAnnotations] с проверкой и ограничением [FK_ImageAnnotations_Images] FOREIGN KEY ([ImageID]) ССЫЛКИ [dbo]. [Images] ([AIImageID])
GO
ALTER TABLE [dbo]. [ImageAnnotations] ПРОВЕРЬТЕ ОГРАНИЧЕНИЕ [FK_ImageAnnotations_Images]
Чего мне не хватает в моем синтаксисе вызовов служб? Как я могу указать или выполнить IDENTITY_INSERT для ON в моем сервисном коде выше? Какой синтаксис?
Большое спасибо,
Val