Sql server 关于Fluent NHibernate/MSSQL中nvarchar(MAX)的混淆

Sql server 关于Fluent NHibernate/MSSQL中nvarchar(MAX)的混淆,sql-server,fluent-nhibernate,Sql Server,Fluent Nhibernate,我一直在寻找使用Fluent nHibernate存储大字符串值(如博客文章或文本描述等)的最佳方法,我一直看到的答案是使用nvarchar(MAX)。如果我的读数是正确的(通常不是),那么它是4000+。所以我有一个这样的领域 Map(x => x.Description) .Column("[description]") .Length(4001) .Access.Property()

我一直在寻找使用
Fluent nHibernate
存储大字符串值(如博客文章或文本描述等)的最佳方法,我一直看到的答案是使用
nvarchar(MAX)
。如果我的读数是正确的(通常不是),那么它是4000+。所以我有一个这样的领域

        Map(x => x.Description)
            .Column("[description]")
            .Length(4001)
            .Access.Property()      
            .Not.Nullable();
理论上,这应该可以做到,对吗?不过我有点困惑。在学校里,我们被非常清楚地教导,你要使每一列的大小尽可能小


如果我让那列
max
size,这是否违背了这个原则,使表变得非常大,而且浪费了时间?有谁能帮我解释清楚,愚蠢,金发碧眼的逻辑吗?我对整个经历感到非常困惑。

看看这个,也许会有帮助:


明白了:

请注意,max意味着最多可以存储2^31-1字节的数据。但是,它将根据数据的实际长度消耗空间