Trang trí mô hình tên miền của bạn với System.ComponentModel.DataAnnotations.StringLengthAttribute
như
[StringLengthAttribute(8001)]
public string Markdown { get;set; }
hoặc
[StringLength(Int32.MaxValue)]
public string Markdown { get;set; }
sử dụng bất kỳ chiều dài lớn hơn 8000 vượt quá chiều dài tối đa của Sql Server varchar
/nvarchar
loại cột mà yêu cầu tuyên bố MAX
.
Sử dụng nhà cung cấp phương ngữ tùy chỉnh để hiểu tờ khai 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;
}
}
Sử dụng các nhà cung cấp khi bạn xây dựng nhà máy sản xuất cơ sở dữ liệu
var dbFactory = new OrmLiteConnectionFactory(conStr, MaxSqlProvider.Instance);
Note minh họa này được đặc biệt nhắm mục tiêu SQLServer nhưng nó sẽ có liên quan cho các nhà cung cấp dữ liệu khác với thay đổi nhỏ sau khi kế thừa từ các nhà cung cấp mong muốn.
Nguồn
2014-09-08 17:12:17
Ở đây bạn có thêm chi tiết [ntext-in-servicestack-ormlite] [1] [1]: http://stackoverflow.com/questions/11281726/ntext-in-servicestack-ormlite –
Tôi sẽ quan tâm đến lý do đằng sau việc sử dụng StringColumnDefinition = UseUnicode? "NVARCHAR (4000)": "VARCHAR (8000)"; – mosesfetters
@FettMo Nếu bạn có nghĩa là lý do tại sao 4000 & 8000 - trường varchar trong SQL Server Express được tối đa là 8000 (trừ khi bạn sử dụng tối đa). nvarchar là lớn gấp đôi như vôn vì vậy nó maxed tại 4000. – kape123