あなたが本当に欲しいと仮定しますNTEXT
。必要な場合、nvarchar(max)
またはhttps://stackoverflow.com/a/25729568/37055varchar(max)
を参照する場合
ドメインモデルを装飾するSystem.ComponentModel.DataAnnotations.StringLengthAttribute
そのような
[StringLengthAttribute(8001)]
public string Markdown { get;set; }
また
[StringLength(Int32.MaxValue)]
public string Markdown { get;set; }
8000 を超える任意の長さを使用して、Sql Server varchar
/nvarchar
列タイプの最大長を超えます。
NTEXT
宣言を理解するカスタム方言プロバイダーを使用します。
public class NTextSqlProvider : SqlServerOrmLiteDialectProvider
{
public new static readonly NTextSqlProvider Instance = new NTextSqlProvider();
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);
fieldDefinition = fieldDefinition.Replace(orig, "NTEXT");
}
return fieldDefinition;
}
}
データベース ファクトリを構築するときにプロバイダーを使用する
var dbFactory = new OrmLiteConnectionFactory(conStr, NTextSqlProvider.Instance);