我在 SQL Server 中有一个具有二进制数据类型的实体和相应的 varbinary(max)
列。 EF 创建了这个:
CREATE TABLE [dbo].[Attachments]
(
[Id] INT IDENTITY(1,1) NOT NULL,
[FileName] NVARCHAR(255) NOT NULL,
[Attachment] VARBINARY(MAX) NOT NULL
);
当我尝试从 Entity Framework 调用 .SaveChanges()
时,出现错误:
Cannot create a row of size 8061 which is greater than the allowable maximum row size of 8060
我理解这个错误,Google 上有很多这样的错误,但我不明白为什么会出现这个错误。这不应该由 Entity Framework /SQL Server 管理吗?
理查德
最佳答案
我可以看到您在该表定义中遇到此错误的唯一方法是,如果您之前有一个较大的固定宽度列,但后来已被删除。
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)
这给了
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.
如果是这种情况,请尝试重建表
ALTER TABLE [dbo].[Attachments] REBUILD
关于sql-server - Entity Framework - 行大小大于允许的最大行大小 8060,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7631546/