尝试将大于4000个字符的字符串插入SQL Server CE数据库时出现InvalidOperationException

时间:2013-06-17 18:35:11

标签: c# sql string sql-server-ce truncate

以下是我的逻辑(向数据库添加一行数据)。这个逻辑有效,但当log.Value.Message的字符串长度大于4000个字符时,它在rs.Insert上失败。这是为什么?我怎么能绕过这个?我尝试在网上搜索,但我找不到任何相关内容。连接字符串将如下所示:

Data Source=C:\\File.sdf;Max Database Size=4000;Password=password;

代码:

SqlCeConnection conn = new SqlCeConnection(ConnectionString);
SqlCeCommand cmd = new SqlCeCommand();
SqlCeResultSet rs;
SqlCeUpdatableRecord rec;

conn.Open();
cmd.Connection = conn;
cmd.CommandText = "LogRecords";  // Table name.
cmd.CommandType = CommandType.TableDirect;
rs = cmd.ExecuteResultSet(ResultSetOptions.Updatable);
rec = rs.CreateRecord();

foreach (KeyValuePair<UInt64,LogRecord> log in v)
{
    rec.SetGuid(0, log.Value.ID);
    rec.SetSqlString(4, log.Value.Message);
    rs.Insert(rec);
}

这是我看到的例外情况:

  

字符串截断:max = 4000,len = 6850,value ='[完整的整个LOREM IPSUM文本,长度为6850]'。

这是我创建数据库的方式:

SqlCeEngine engine = new SqlCeEngine(ConnectionString);
engine.CreateDatabase();

1 个答案:

答案 0 :(得分:1)

我想出来了,需要设置typename,即:[Column(TypeName =“ntext”)] public string Body {get;组; }