我明白这个错误意味着我试图插入一个大于我在数据库中允许的值,但我看不到是哪个值导致了问题
这是我插入数据的地方:
UserActivity log = new UserActivity();
ApplicationDbContext db = new ApplicationDbContext();
log.UserEmail = User.Identity.Name;
log.SQL_Query = queryString;
log.Query_Start = String.Format("{0:hh:mm:ss}", start);
log.Query_End = String.Format("{0:hh:mm:ss}", end);
log.Query_Time = String.Format("{0:mm:ss.ff}", Duration.ToString());
db.UserActivities.Add(log);
db.SaveChanges();
这是数据库表定义:
CREATE TABLE [dbo].[UserActivities] (
[Id] INT NOT NULL,
[UserEmail] VARCHAR (255) NOT NULL,
[SQL_Query ] VARCHAR (1000) NOT NULL,
[Query_Start] VARCHAR (11) NULL,
[Query_End] VARCHAR (11) NULL,
[Query_Time] VARCHAR (11) NULL,
[Error_Message] VARCHAR (255) NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);
在调试器中,我使用 length 命令查看我传入的值的长度,这是我的结果:
log.UserEmail.Length;
21
log.Query_End.Length;
8
log.Query_Start.Length;
8
log.SQL_Query.Length;
32
这是 UserActivity 类
public class UserActivity
{
[Key]
public int Id { get; set; }
public string UserEmail { get; set; }
public string SQL_Query { get; set; }
public string Query_Start { get; set; }
public string Query_End { get; set; }
public string Query_Time { get; set; }
public string Error_Message { get; set; }
}
最佳答案
这里的问题是持续时间的格式,我假设这是一个 TimeSpan 对象。如果您的持续时间为 3 分钟 45 秒 210 毫秒,则使用您目前获得的内容,您的 Query_Time 变量将设置为:00:03:45.210000。
您将希望使用以下内容代替当前的 String.Format:
log.Query_Time = Duration.ToString("mm\\:ss\\.ff");
这会给你一个类似 03:45.21 的输出,我想这就是你的目标。
关于c# - MVC - 字符串或二进制数据将被截断。\r\n语句已终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37548030/