gpt4 book ai didi

sql-server - 流畅的 nhibernate SQL Server 2008 R2 Express 非常长的字符串保存问题

转载 作者:行者123 更新时间:2023-12-03 09:55:14 29 4
gpt4 key购买 nike

我正在尝试创建我的第一个 NHibernate 项目,所以有可能我在这里做了一些愚蠢的事情,但是已经使用谷歌搜索了几天并且还没有任何乐趣。

我有一个具有各种属性的 Article 对象:

public class Article {
public virtual string Title { get; set; }
public virtual string Body { get; set; }
}

我正在使用流畅的配置来加载映射:
configuration.Mappings(m => m.AutoMappings.Add((AutoMap.AssemblyOf<Article>())
.Conventions.Add(DefaultCascade.All())
.UseOverridesFromAssemblyOf<SchemaConfigurationController>())

覆盖是:
public class ArticleOverrideMapping : IAutoMappingOverride<Article>
{
public void Override(AutoMapping<Article> mapping)
{
//mapping.Map(x => x.Body).CustomSqlType("NVARCHAR(4000)");
//mapping.Map(article => article.Body).Length(10000);
//mapping.Map(article => article.Body).Length(Int32.MaxValue);
//mapping.Map(article => article.Body).CustomSqlType("NVARCHAR(max)");
//mapping.Map(article => article.Body).CustomSqlType("NVARCHAR(max)").Length(Int32.MaxValue);
mapping.Map(article => article.Body).CustomType("StringClob").CustomSqlType("NVARCHAR(max)");
}
}

我已经尝试了每一行注释掉的行(大致按照我在网上找到可能的解决方案的顺序)。我可以让 SQL Server 创建 nvarchar(max) 列,如果我使用 SQL management studio,我可以将很多(185,602 个字是最大的测试)粘贴到 Body 列中。我的问题是尝试使用 NHibernate 从 MVC 站点保存它。

我得到两个主要错误:
String or binary data would be truncated.  The statement has been terminated.

如果我没有设置“.Length(Int32.MaxValue)”覆盖,就会发生这种情况。

发生的第二个错误(设置长度时):
The length of the string value exceeds the length configured in the mapping/parameter.

我现在很困惑我应该做什么。我的目标是能够在 SQL Server(和用于测试的 SQLite,SQLite 不喜欢 nvarchar(max))中存储一个非常大的字符串(整篇文章)并将其取回,(并对其进行编辑) MVC 网站。

更新

根据@Cymen 的链接,我尝试过
.CustomSqlType("nvarchar(max)").Length(Int32.MaxValue).Nullable();

但这导致错误:
The length of the string value exceeds the length configured in the mapping/parameter. 

当我只尝试保存 1201 个单词时(所有单词“test”)。当我在上述映射“.Length(Int32.MaxValue)”的末尾添加长度时,我仍然出现同样的错误。

更新

想确认我正在使用哪些版本:
 FluentNHibernate.1.3.0.733
NHibernate.3.3.1.4000
Microsoft.AspNet.Mvc.4.0.20710.0

最终更新

Kieren 说得对,我完全忘记了我使用了该属性并在服务器上对其运行了 markdownsharp 并在服务器上填充了第二个属性。所以这是我没有映射的第二个属性实际上爆炸了,抱歉。

最佳答案

这就是我通常处理它的方式。
mapping.Map(x => x.Problem).CustomType("varchar(MAX)");
不知道 CustomSqlType 是什么,但我从未使用过它,这有效。

关于sql-server - 流畅的 nhibernate SQL Server 2008 R2 Express 非常长的字符串保存问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13387081/

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