Angenommen, Sie wirklichNTEXT
wollen. Wenn Sie möchten, nvarchar(max)
oder varchar(max)
sehen https://stackoverflow.com/a/25729568/37055
Schmücken Sie Ihren Domain-Modell mit System.ComponentModel.DataAnnotations.StringLengthAttribute
wie
[StringLengthAttribute(8001)]
public string Markdown { get;set; }
oder
[StringLength(Int32.MaxValue)]
public string Markdown { get;set; }
jede Länge von mehr als 8000 mit der maximalen Länge überschreiten von Sql Server varchar
/nvarchar
Spalte Arten.
Verwenden Sie einen benutzerdefinierten Dialekt-Anbieter, der die NTEXT
Deklaration versteht.
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;
}
}
den Anbieter verwenden, wenn Sie die Datenbank Fabrik
konstruieren
var dbFactory = new OrmLiteConnectionFactory(conStr, NTextSqlProvider.Instance);
C# 's String-Datentyp für ntext- in Ordnung ist. Es kann Unicode-Zeichen enthalten und eine Zeichenfolge beliebiger Länge enthalten. – Andomar
Verwenden Sie 'text',' ntext' oder 'image' nicht für Neuentwicklungen - diese Datentypen sind [veraltet] (http://msdn.microsoft.com/en-us/library/ms187993.aspx). Verwenden Sie jeweils 'varchar (MAX)', 'nvarchar (MAX)' und 'varbinary (MAX)'. Sie müssen in Ihrer ORM-Dokumentation nachlesen, wie Sie diese Typen verwenden können. –
Ich unterstütze @JonSeigels Kommentar. Und Sie können die Länge der Zeichenfolge mit Attributen in Ormlite angeben. – kunjee