装饰你的领域模型System.ComponentModel.DataAnnotations.StringLengthAttribute
如
[StringLengthAttribute(8001)]
public string Markdown { get;set; }
或者
[StringLength(Int32.MaxValue)]
public string Markdown { get;set; }
使用任何大于 8000 的长度来超过需要声明的 Sql Server varchar
/nvarchar
列类型的最大长度。MAX
使用理解MAX
声明的自定义方言提供程序。
public class MaxSqlProvider : SqlServerOrmLiteDialectProvider
{
public new static readonly MaxSqlProvider Instance = new MaxSqlProvider ();
public override string GetColumnDefinition(string fieldName, Type fieldType,
bool isPrimaryKey, bool autoIncrement, bool isNullable,
int? fieldLength, int? scale, string defaultValue)
{
var fieldDefinition = base.GetColumnDefinition(fieldName, fieldType,
isPrimaryKey, autoIncrement, isNullable,
fieldLength, scale, defaultValue);
if (fieldType == typeof (string) && fieldLength > 8000)
{
var orig = string.Format(StringLengthColumnDefinitionFormat, fieldLength);
var max = string.Format(StringLengthColumnDefinitionFormat, "MAX");
fieldDefinition = fieldDefinition.Replace(orig, max);
}
return fieldDefinition;
}
}
构建数据库工厂时使用提供者
var dbFactory = new OrmLiteConnectionFactory(conStr, MaxSqlProvider.Instance);
请注意,此插图专门针对 SqlServer,但它与其他数据提供程序相关,在从所需提供程序继承后进行了细微更改。