Entity Framework - размер строки превышает допустимый максимальный размер строки 8060 - PullRequest
6 голосов
/ 03 октября 2011

У меня есть объект с двоичным типом данных и соответствующим столбцом varbinary(max) в SQL Server.EF создает это:

CREATE TABLE [dbo].[Attachments] 
(
    [Id] INT IDENTITY(1,1) NOT NULL,
    [FileName] NVARCHAR(255) NOT NULL,
    [Attachment] VARBINARY(MAX) NOT NULL
);

Когда я пытаюсь вызвать .SaveChanges() из Entity Framework, я получаю сообщение об ошибке:

Невозможно создать строку размером 8061, которая больше чемдопустимый максимальный размер строки 8060

Я понимаю ошибку, в Google ее достаточно, но я не понимаю, почему я ее получаю.Разве это не должно управляться Entity Framework / SQL Server?

Ричард

1 Ответ

17 голосов
/ 03 октября 2011

Единственный способ увидеть, как вы получаете эту ошибку с этим определением таблицы, - это если у вас ранее был большой столбец фиксированной ширины, который с тех пор был удален.

CREATE TABLE [dbo].[Attachments] (
    [Id] int IDENTITY(1,1) NOT NULL,
    [FileName] nvarchar(255) NOT NULL,
    [Attachment] varbinary(max) NOT NULL,
    Filler char(8000),
    Filler2 char(49)
);

ALTER TABLE  [dbo].[Attachments] DROP COLUMN Filler,Filler2

INSERT INTO [dbo].[Attachments]
([FileName],[Attachment])
VALUES
('Foo',0x010203)

, который дает

Сообщение 511, Уровень 16, Состояние 1, Строка 12 Невозможно создать строку размером 8075, которая превышает максимально допустимый максимальный размер строки 8060.

В этом случае попробуйтевосстановление таблицы

ALTER TABLE [dbo].[Attachments] REBUILD 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...