Entity Framework 7을 통해 여러 행을 삽입 할 때 오류가 발생합니다.

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

문제

간단한 테이블과 함께 간단한 모델을 만들었습니다.

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 ','. 오류가 발생합니다 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)
)

왜 오류가 발생합니까?

Entity Framework 7은 asp.net 5 / mvc 6에서 Entity Framework 7을 사용하고 있음을 언급해야합니다. Entity Framework 7의 버전은 "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final"

추신 : 코드를 프로파일 링하고 그것은 다음과 같은 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에 대한 것입니다.

수락 된 답변

SQL Server 2005는 Entity Framework 7에서 지원되지 않습니다. 실제로 SQL Server 2005는 Microsoft에서 더 이상 지원하지 않습니다.

특히 EF7에서 사용되는 다중 행 INSERT VALUES 구문은 지원되지 않으며 SQL Server 2008 이상이 필요합니다.

https://github.com/aspnet/EntityFramework/issues/3691을 참조 하십시오.

MaxBatchSize를 1로 설정하면 문제를 해결할 수 있습니다.




아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.