J'essaie d'utiliser LINQ pour insérer une ligne dans une table et la colonne ID de la table a une identification spécification:spécification d'identité ne fonctionne pas dans LINQ
CREATE TABLE [dbo].[Event](
[ID] [int] IDENTITY(36,1) NOT NULL,
[Description] [nvarchar](100) NOT NULL,
[OccurredDateTime] [datetime] NULL,
CONSTRAINT [PK_Event] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
Je la spécification d'identité ont représenté dans mon dossier DBML dans mon projet Visual studio:
[Table(Name="dbo.Event")]
public partial class Event : INotifyPropertyChanging, INotifyPropertyChanged
{
/* ... */
[Column(Storage="_ID", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
public int ID
{
/* ... */
}
/* ... */
}
Qu'est-ce qui ne va pas? Lorsque je tente d'insérer comme ceci:
Data.Event myEvent = new Data.Event();
myEvent.Description = summaryText;
db.Events.InsertOnSubmit(myEvent);
db.SubmitChanges();
l'exception suivante est levée:
SqlException: Impossible d'insérer la valeur NULL dans la colonne 'ID', table 'redacted.dbo.Event' ; La colonne n'autorise pas les valeurs NULL. INSERT échoue. La déclaration a été terminée
Je pense que j'avais la mauvaise base de données spécifiée dans une chaîne de connexion. Je tente toujours d'obtenir mon test mis en place pour vérifier ... –