繁体   English   中英

无法在Orchard中将长字符串插入数据库表

[英]Can't insert long string to database table in Orchard

我创建了桌子

    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())
            );

SQL Server数据库中的表已创建(字符串在legth属性中具有max)。 如果我从数据库服务器生成SQL表脚本,它将是这样的(因此字符串被标记为无限)

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]

但是...当我尝试在表中插入记录时,nhibernate抛出异常“ Plus.SpotServerIntegration.Rkeeper.Models.RkeeperV7MenuRecord.OriginalData的错误脱水属性值”,内部异常是“字符串值的长度超过了在映射/参数。” 我应该怎么做才能插入记录?

PS字符串约为100000 simbols(它是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; }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM