0

以下是我的逻辑(将一行数据添加到数据库中)。这个逻辑有效,但是当我的字符串长度大于 4000 个字符时log.Value.Message,它会在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='[MY HUGE STRING FULL OF THE ENTIRE LOREM IPSUM TEXT, A LENGTH OF 6850]'。

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

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

1 回答 1

1

我想通了,需要设置typename,即:[Column(TypeName = "ntext")] public string Body { get; 放; }

于 2014-02-18T02:14:53.997 回答