通過Entity Framework 7插入多行時出錯


我有一個簡單的表和一個簡單的生成模型。

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

當我嘗試通過AddRange方法(下面的代碼)添加多個條目時,它會導致錯誤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)
)

我也嘗試過使用Add方法:

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

但是,如果我保存每個單獨的項目,如下所示,它可以工作,但是你可以想像,當有很多行時它真的會變慢:

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

為什麼我收到錯誤?

我應該提到我正在使用asp.net 5 / mvc 6的實體框架7.實體框架7的版本是"EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final"

PS我分析了代碼,它生成了以下SQL,可預測地給出了相同的錯誤:

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這是針對SQL Server 2005的

一般承認的答案

實體框架7不支持SQL Server 2005(事實上,Microsoft不再支持SQL Server 2005)。

具體來說,不支持EF7使用的多行INSERT VALUES語法,它需要SQL Server 2008或更高版本。

請參閱https://github.com/aspnet/EntityFramework/issues/3691

您可以通過將MaxBatchSize設置為1來解決此問題





許可下: CC-BY-SA
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因