无法将长字符串插入 Orchard 中的数据库 table
Can't insert long string to database table in Orchard
我创造了table
private static void CreateTable(SchemaBuilder builder) {
builder.CreateTable(typeof(RkeeperV7MenuRecord).Name, table => table
.Column<int>("Id", c => c.PrimaryKey().Identity())
.Column<int>("SpotId", c => c.NotNull())
.Column<DateTime>("Date", c => c.NotNull())
.Column<string>("OriginalData", c => c.NotNull().Unlimited())
);
和 table in SQL 服务器数据库已创建(并且字符串的长度最大 属性)。如果我从数据库服务器生成 SQL table 脚本,它将是这样的(因此字符串被标记为无限制)
CREATE TABLE [dbo].[Plus_Plus_SpotServerIntegration_Rkeeper_RkeeperV7MenuRecord](
[Id] [int] IDENTITY(1,1) NOT NULL,
[SpotId] [int] NOT NULL,
[Date] [datetime] NOT NULL,
[OriginalData] [nvarchar](max) NOT NULL,
PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
但是...当我尝试在 table 中插入记录时,nhibernate 抛出异常 "Error dehydrating property value for Plus.SpotServerIntegration.Rkeeper.Models.RkeeperV7MenuRecord.OriginalData" 并且内部异常是 "The length of the string value exceeds the length configured in the mapping/parameter."
我应该怎么做才能插入记录?
PS
字符串大约是 100000 个符号(它是 xml)
_rkeeperV7MenuRepositiory.Create(new RkeeperV7MenuRecord {
OriginalData = model.OriginalData,
SpotId = spot.Id,
Date = _clock.UtcNow
});
哪里
private readonly IRepository<RkeeperV7MenuRecord> _rkeeperV7MenuRepositiory;
知道了!
应该像这样
按属性 "StringLengthMax" 标记 属性 记录
public class RkeeperV7MenuRecord : DefaultEntityRecord {
public virtual int SpotId { get; set; }
public virtual DateTime Date { get; set; }
[StringLengthMax]
public virtual string OriginalData { get; set; }
}
我创造了table
private static void CreateTable(SchemaBuilder builder) {
builder.CreateTable(typeof(RkeeperV7MenuRecord).Name, table => table
.Column<int>("Id", c => c.PrimaryKey().Identity())
.Column<int>("SpotId", c => c.NotNull())
.Column<DateTime>("Date", c => c.NotNull())
.Column<string>("OriginalData", c => c.NotNull().Unlimited())
);
和 table in SQL 服务器数据库已创建(并且字符串的长度最大 属性)。如果我从数据库服务器生成 SQL table 脚本,它将是这样的(因此字符串被标记为无限制)
CREATE TABLE [dbo].[Plus_Plus_SpotServerIntegration_Rkeeper_RkeeperV7MenuRecord](
[Id] [int] IDENTITY(1,1) NOT NULL,
[SpotId] [int] NOT NULL,
[Date] [datetime] NOT NULL,
[OriginalData] [nvarchar](max) NOT NULL,
PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
但是...当我尝试在 table 中插入记录时,nhibernate 抛出异常 "Error dehydrating property value for Plus.SpotServerIntegration.Rkeeper.Models.RkeeperV7MenuRecord.OriginalData" 并且内部异常是 "The length of the string value exceeds the length configured in the mapping/parameter." 我应该怎么做才能插入记录?
PS 字符串大约是 100000 个符号(它是 xml)
_rkeeperV7MenuRepositiory.Create(new RkeeperV7MenuRecord {
OriginalData = model.OriginalData,
SpotId = spot.Id,
Date = _clock.UtcNow
});
哪里
private readonly IRepository<RkeeperV7MenuRecord> _rkeeperV7MenuRepositiory;
知道了! 应该像这样
按属性 "StringLengthMax" 标记 属性 记录public class RkeeperV7MenuRecord : DefaultEntityRecord {
public virtual int SpotId { get; set; }
public virtual DateTime Date { get; set; }
[StringLengthMax]
public virtual string OriginalData { get; set; }
}