Ottenere un errore quando si inseriscono più righe tramite Entity Framework 7

asp.net-core-mvc c# entity-framework entity-framework-core

Domanda

Ho una semplice tabella e un semplice modello generato per andare avanti con esso.

CREATE TABLE dbo.Admin (
     Id int IDENTITY(1, 1) NOT NULL
    ,DomainLogin nvarchar(50) NOT NULL
    ,CONSTRAINT PK_Admin PRIMARY KEY CLUSTERED (DomainLogin ASC)
)

Quando tento di aggiungere più voci tramite il metodo AddRange (codice di seguito), provoca un errore Incorrect syntax near ','.

CREATE TABLE dbo.Admin (
     Id int IDENTITY(1, 1) NOT NULL
    ,DomainLogin nvarchar(50) NOT NULL
    ,CONSTRAINT PK_Admin PRIMARY KEY CLUSTERED (DomainLogin ASC)
)

Ho anche provato a utilizzare il metodo Aggiungi:

CREATE TABLE dbo.Admin (
     Id int IDENTITY(1, 1) NOT NULL
    ,DomainLogin nvarchar(50) NOT NULL
    ,CONSTRAINT PK_Admin PRIMARY KEY CLUSTERED (DomainLogin ASC)
)

Tuttavia, se salvi ogni singolo oggetto, come sotto, funziona, ma come puoi immaginare, rallenta molto quando ci sono molte righe:

CREATE TABLE dbo.Admin (
     Id int IDENTITY(1, 1) NOT NULL
    ,DomainLogin nvarchar(50) NOT NULL
    ,CONSTRAINT PK_Admin PRIMARY KEY CLUSTERED (DomainLogin ASC)
)

Perché ricevo un errore?

Devo dire che sto utilizzando Entity Framework 7 con asp.net 5 / mvc 6. La versione di Entity Framework 7 è "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final"

PS Ho profilato il codice e genera il seguente SQL, che fornisce in modo prevedibile lo stesso errore:

CREATE TABLE dbo.Admin (
     Id int IDENTITY(1, 1) NOT NULL
    ,DomainLogin nvarchar(50) NOT NULL
    ,CONSTRAINT PK_Admin PRIMARY KEY CLUSTERED (DomainLogin ASC)
)

PPS Questo è contro SQL Server 2005

Risposta accettata

SQL Server 2005 non è supportato da Entity Framework 7 (infatti SQL Server 2005 non è più supportato da Microsoft).

In particolare, la sintassi INSERT VALUES a più righe utilizzata da EF7 non è supportata, richiede SQL Server 2008 o versione successiva.

Vedi https://github.com/aspnet/EntityFramework/issues/3691

Potresti riuscire a ovviare impostando un MaxBatchSize di 1




Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché