Une table SQL possède des propriétés d'incrémentation automatique pour la clé primaire AnnotationID du type INT.Comment insérer une ligne dans la base de données SQL avec IDENTITY_INSERT défini sur OFF à l'aide des services WCF?
L'application Silverlight WCF code de service:
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();
}
Une exception est levée sur db.SubmitChanges() avec le message: Impossible d'insérer la valeur explicite pour la colonne de identiy dans la table ImageAnnotations lorsque IDENTITY_INSERT est réglé sur OFF.
Je ne spécifie pas la clé primaire, qui est supposée être la clé d'identité, parce que je m'attends à ce que la base de données se charge de l'incrémentation automatique de la valeur de la clé primaire.
Le tableau script de création est ici:
UTILISATION [ImagingSericesDB]
GO
SET ANSI_NULLS SUR
GO
SET quoted_identifier
GO
CREATE TABLE [dbo]. [ImageAnnotations] (
[AnnotationID] [int] IDENTITY(0,1) NOT NULL,
[ImageID] [int] NOT NULL,
[ImagePath] [text] NULL,
CONTRAINTE [PK_ImageAnnotations] PRIMARY KEY CLUSTERED
( [AnnotationID] ASC
) AVEC (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMAIRE]
) SUR [PRIMAIRE] T EXTIMAGE_ON [PRINCIPAL]
GO
ALTER TABLE [dbo]. [ImageAnnotations] AVEC ajouter CONTRAINTE [FK_ImageAnnotations_Images] FOREIGN KEY ([ImageID]) RÉFÉRENCES [dbo]. [Images] ([AIImageID]) GO
ALTER TABLE [dbo]. [ImageAnnotations] CONTRAINTE CHÈQUE [FK_ImageAnnotations_Images]
Ce que je suis absent dans ma syntaxe d'appel de service? Comment puis-je spécifier ou exécuter IDENTITY_INSERT sur ON dans mon code de service ci-dessus? Quelle est la syntaxe? Merci beaucoup, Val
Vous devriez probablement poster votre script de création de table. – nlawalker