以下是我的逻辑(向数据库添加一行数据)。这个逻辑有效,但当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();
答案 0 :(得分:1)
我想出来了,需要设置typename,即:[Column(TypeName =“ntext”)] public string Body {get;组; }