У меня есть хранимая процедура вставки в таблицу в SQL Server:
CREATE PROCEDURE ThemHocSinh
@TenHS NVARCHAR(255),
@NgaySinh DATETIME,
@TenChaMe NVARCHAR(255),
@SDTChaMe VARCHAR(16),
@DiaChi NVARCHAR(255),
@LopHC VARCHAR(6)
AS
INSERT INTO dbo.HocSinh (MaHS, TenHS, NgaySinh, NgayNhapHoc, TenChaMe, SDTChaMe, DiaChi, LopHC)
VALUES (DEFAULT, @TenHS, @NgaySinh, DEFAULT, @TenChaMe, @SDTChaMe, @DiaChi, @LopHC)
Я пишу функцию на C # с Dapper и передаю динамические параметры с типом DateTime
.
public void ThemHocSinh(string TenHS, DateTime NgaySinh, string TenChaMe, string SDT, string DiaChi, string LopHC)
{
using (MamNonBK context = new MamNonBK())
{
using (IDbConnection db = new SqlConnection(context.Database.Connection.ConnectionString))
{
var p = new DynamicParameters();
p.Add("@TenHS", TenHS);
p.Add("@NgaySinh", NgaySinh);
p.Add("@TenChaMe", TenChaMe);
p.Add("@SDTChaMe", SDT);
p.Add("@DiaChi", DiaChi);
p.Add("@LopHC", LopHC);
db.Execute("ThemHocSinh", p, commandType: CommandType.StoredProcedure);
}
}
}
Но, похоже, моя программа падает, потому что параметр dateTime не совпадает. Моя системная дата и время отформатированы как "дд / мм / гггг". Это ошибка, когда я вызываю функцию и передаю параметр DateTime.
System.Data.SqlClient.SqlException: Преобразование типа данных varchar в datetimeтип данных привел к значению вне допустимого диапазона. Заявление было прекращено.