我知道这个错误意味着我试图插入一个大于我在数据库中允许的值,但我看不到值引起的问题MVC - 字符串或二进制数据将被截断。 r n声明已终止
这是我在插入数据:
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)
);
在调试器中我使用长度命令看我传递中的值的长度,这是我的结果:
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; }
}
为什么你使用varchars的时间?为什么不使用日期时间并存储它?显然其中一项太长,请调试 –
您可以显示'UserActivity'类定义,'Duration'变量定义/赋值,并给出'Query_Time'字段/属性中的一个值的示例吗?我怀疑这个问题可能是'Query_Time'。 – Zack
如果我有'DateTime start = DateTime.Now - TimeSpan.FromMinutes(2);','DateTime end = DateTime.Now;'和'TimeSpan Duration = end - start;'然后设置'log.Query_Time = String .Format(“{0:mm:ss.ff}”,Duration.ToString()'then'log.QueryTime'等于'“00:02:00.0030060”' – Zack