开发者

Entity Framework - Row size greater than allowable maximum row size of 8060

I have an entity with a binary datatype and a corresponding varbinary(max) column in SQL Server. EF creates this:

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

When I try to call .SaveChanges() from Entity Framework, I get an error:

Cannot create a row of size 8061 which is greater than the allowable maximum row size of 8060

I understand the error, there's plenty of that on Google but I don't understand why I'm getting it. S开发者_高级运维houldn't this be managed by Entity Framework / SQL Server?

Richard


The only way I can see you getting this error with that table definition is if you have previously had a large fixed width column that has since been dropped.

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)

Which Gives

Msg 511, Level 16, State 1, Line 12 Cannot create a row of size 8075 which is greater than the allowable maximum row size of 8060.

If this is the case then try rebuilding the table

ALTER TABLE [dbo].[Attachments] REBUILD 
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜