gpt4 book ai didi

nhibernate - 字符串值的长度超过映射/参数中配置的长度

转载 作者:行者123 更新时间:2023-12-03 06:54:43 24 4
gpt4 key购买 nike

我正在尝试将一些非常长的文本插入到字符串属性中 - 它与 LinqToSql 完美配合,现在我已切换到 NHibernate 并希望保存相同的实体,但 nHibernate 抛出了上述异常。

我该如何解决这个问题?

最初我的 Prop 定义为:

        Map(x => x.Content, "fT_Content").Nullable();
Map(x => x.Fields, "fT_Fields").Nullable();

现在他们是:这可行但为什么我必须这样做?

        Map(x => x.Content, "fT_Content").CustomSqlType("nvarchar(max)").Length(Int32.MaxValue).Nullable();
Map(x => x.Fields, "fT_Fields").CustomSqlType("nvarchar(max)").Length(Int32.MaxValue).Nullable();

注意:我有使用 nuget 的最新 nhibernate。

以下字段供引用:

    public virtual string Content
{
get;
set;
}

public virtual string Fields
{
get;
set;
}

我想避免进入现场生产,突然插入停止在此表上工作......

最佳答案

这是 NHibernate 处理 nvarchar(max) 时的一个众所周知的问题,请参阅:

http://geekswithblogs.net/lszk/archive/2011/07/11/nhibernatemapping-a-string-field-as-nvarcharmax-in-sql-server-using.aspx

多年来,我一直将 nvarchar(max) 列文件映射到 StringClob,没有遇到任何问题:

<property name="myProp" column="MY_PROP" not-null="true" type="StringClob" access="property"></property>   

此链接(来自评论)描述了解决此问题所需的流畅映射:

https://www.tritac.com/nl/blog/fluent-nhibernate-nvarchar-max-fields-truncated-to-4000-characters/

Map(x => x.Description).CustomType("StringClob").CustomSqlType("nvarchar(max)");

关于nhibernate - 字符串值的长度超过映射/参数中配置的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12708171/

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