我有以下代码从表单获取输入并调用存储过程将其存储在数据库中。
[HttpPost]
public ActionResult Index(GuestMessage model)
{
if (ModelState.IsValid)
{
using(IDbConnection conn = DatabaseAcess.OpenConnection())
{
const string storedProcedure = "dbo.InsertMessage";
conn.Execute(storedProcedure, new GuestMessage { Name = model.Name, Email = model.Email, Message = model.Message }, null, null, CommandType.StoredProcedure);
return View("ThankYou");
}
}
return View();
}
共有三个字段,Name
和E-mail
,Message
必须由用户填写。在数据库中,我使用名为 dbo.Insert Message 的存储函数存储用户从这三个字段输入的数据以及输入时间。
BEGIN
BEGIN TRAN
SET NOCOUNT ON;
DECLARE @GuestID int;
INSERT INTO Guest(Name, Email) VALUES (@Name, @Email);
SELECT @GuestID = scope_identity();
INSERT INTO Message (EntryDate, GuestID, Message, Status)
VALUES (GETDATE(), @GuestID, @Message, 2);
COMMIT TRAN
END
请注意,我没有将输入日期和时间作为输入参数传递给存储过程,因为不需要这样做。我使用 SQL Server 中的内置函数GETDATE()
来确定用户输入消息的时间。
但是,每当我尝试输入消息时,我都会收到以下错误:
SqlDateTime 溢出。必须在 1753 年 1 月 1 日上午 12:00:00 到 9999 年 12 月 31 日晚上 11:59:59 之间