gpt4 book ai didi

c# - String Unlimited 仍然限制为 4000 个字符?

转载 作者:行者123 更新时间:2023-11-30 13:47:14 28 4
gpt4 key购买 nike

我正在使用 Orchard 1.6 并且正在为我的模块创建部件。我的迁移文件中创建特定表的部分是:

    // Creating table SessionInformationRecord
SchemaBuilder.CreateTable("SessionInformationRecord", table => table
.Column("Id", DbType.Int32, column => column.PrimaryKey().Identity())
.Column("TrackInformationRecord_Id", DbType.Int32)
.Column("Title", DbType.String, col => col.Unlimited())
.Column("Description", DbType.String, col => col.Unlimited())
.Column("StartDate", DbType.DateTime)
.Column("EndDate", DbType.DateTime)
.Column("HasEvaluation", DbType.Boolean)
.Column("IsDeleted", DbType.Boolean)
);

标题和描述应该是无限的字符串。但是,当我为那些超过 4000 个字符的字段输入内容时,出现此错误:

{"@p1 : String truncation: max=4000, len=21588, value=''."}

还有其他方法可以解决这个问题吗?还是 4000 个字符是字符串的最大值?

更新:

除了数据库方面,我读到您还必须在 NHibernate 方面处理它以确保它不会截断字符串。人们告诉我添加属性:

[StringLengthMax]

但是,我的模型只能识别 [StringLength] 属性。我需要导入什么命名空间或类才能使用 [StringLengthMax] 属性?

最佳答案

虽然底部的答案是正确的,但并不完整。

为了避免 4000 个字符的限制,它必须同时在 DB 和 NHibernate 上处理。

  1. 对于数据库,您只需将列定义为无限制,因为我初步做了。确保列为 nvarchar(max) 或数据库中的 varchar(max)。

    // Creating table KeynoteInformationRecord
    SchemaBuilder.CreateTable("KeynoteInformationRecord", table => table
    .Column("Id", DbType.Int32, column => column.PrimaryKey().Identity())
    .Column("KeynotePartId", DbType.Int32)
    .Column("Title", DbType.String, column => column.Unlimited())
    .Column("Description", DbType.String, column => column.Unlimited())
    .Column("StartDate", DbType.DateTime)
    .Column("EndDate", DbType.DateTime)
    .Column("HasEvaluation", DbType.Boolean)
    .Column("IsDeleted", DbType.Boolean)
    );
  2. 在 Nhibernate 端,为确保字符串不被截断,您必须将 [StringLengthMax] 属性添加到模型类中的字符串属性中。在 Orchard 中,您必须包含 Orchard.Data.Conventions 才能使用该属性。

见下文:

public class KeynoteInformationRecord
{
public virtual int Id { get; set; }
public virtual int KeynotePartId { get; set; }
[StringLengthMax]
public virtual string Title { get; set; }
[StringLengthMax]
public virtual string Description { get; set; }
public virtual DateTime StartDate { get; set; }
public virtual DateTime EndDate { get; set; }
public virtual bool HasEvaluation { get; set; }
public virtual bool IsDeleted { get; set; }
}

关于c# - String Unlimited 仍然限制为 4000 个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18314920/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com