下面是我的逻辑(它向数据库添加了一行数据)。这个逻辑是有效的,但是当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();
我想通了,需要设置typename,即:[Column(typename =" ntext")] public string Body {get;设置;}