meh*_*dad 8 c# sql-server code-first servicestack ormlite-servicestack
我怎样才能在ServiceStack.OrmLite代码中首先使用nText数据类型?
public class Email
{
[AutoIncrement]
public long ID { get; set; }
public DateTime Date { get; set; }
public string From { get; set; }
public string Subject { get; set; }
nText =>
public string Body { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
如果我使用字符串数据类型,ormlite在数据库中生成nVarchar(8000)
我需要超过8000个字符的数据
您需要将Body类型转换byte[]为stringServiceStack.OrmLite 才能使用varchar(max)列类型。像下面这样:
public byte[] Body { get; set; }
Run Code Online (Sandbox Code Playgroud)
其原因在于 ServiceStack.OrmLite 代码中。
在文件ServiceStack.OrmLite/OrmLiteDialectProviderBase.cs中,方法如下InitColumnTypeMap():
DbTypeMap.Set<byte[]>(DbType.Binary, BlobColumnDefinition);
Run Code Online (Sandbox Code Playgroud)
在文件ServiceStack.OrmLite.SqlServer/SqlServerOrmLiteDialectProvider.cs下,方法SqlServerOrmLiteDialectProvider()为:
base.BlobColumnDefinition = "VARBINARY(MAX)";
Run Code Online (Sandbox Code Playgroud)
从这段代码中,您可以看到从 C# 类型到内部 ServiceStack.OrmLite 类型的内部映射,然后返回到 SqlServer 类型。
这个问题解释了如何在字符串和字节数组之间来回转换,如何在 C# 中获得一致的字符串字节表示而不手动指定编码?。