如何在 Dapper 中获取正确的日期时间
How to get correct DateTime in Dapper
我正在使用 Dapper 在 ASP.NET Core 和 SQL 服务器中处理用户。
一切正常,除了 DateTime
.
正确的 DateTime
存储在数据库中 (04.10.2021 16:11:45),但是从数据库中检索它 returns 默认日期时间 (0001-01-01T00:00 :00).
这是 User
模型 class:
public class User
{
public DateTime CreatedAt { get; set; }
}
并且我在User
存储库中使用此方法向数据库添加一个User
:
public async Task<int> AddAsync(User entity)
{
entity.CreatedAt = DateTime.Now;
string sql = "insert into users (id, username, email, password, created_at) values (@Id, @Username, @Email, @Password, @CreatedAt)";
using var connection = new SqlConnection(_configuration.GetConnectionString("Default"));
connection.Open();
var result = await connection.ExecuteAsync(sql, entity);
return result;
}
这是通过id获取User
的方法:
public async Task<User> GetByIdAsync(string id)
{
string sql = "select * from users where id = @Id";
using var connection = new SqlConnection(_configuration.GetConnectionString("Default"));
connection.Open();
var result = await connection.QuerySingleOrDefaultAsync<User>(sql, new { Id = id });
return result;
}
User
数据在控制器中获取:
[HttpGet("{id}")]
public async Task<IActionResult> GetById(string id)
{
var data = await _unitOfWork.Users.GetByIdAsync(id);
if (data == null)
{
return Ok();
}
return Ok(data);
}
table 的列类型是 DATETIME
。
要么修改你的select语句,这样它returnsCreatedAt
列
select ... , created_at as [CreatedAt], ... from
或者确保您的应用程序在应用程序启动时调用此行
Dapper.DefaultTypeMap.MatchNamesWithUnderscores = true;
我正在使用 Dapper 在 ASP.NET Core 和 SQL 服务器中处理用户。
一切正常,除了 DateTime
.
正确的 DateTime
存储在数据库中 (04.10.2021 16:11:45),但是从数据库中检索它 returns 默认日期时间 (0001-01-01T00:00 :00).
这是 User
模型 class:
public class User
{
public DateTime CreatedAt { get; set; }
}
并且我在User
存储库中使用此方法向数据库添加一个User
:
public async Task<int> AddAsync(User entity)
{
entity.CreatedAt = DateTime.Now;
string sql = "insert into users (id, username, email, password, created_at) values (@Id, @Username, @Email, @Password, @CreatedAt)";
using var connection = new SqlConnection(_configuration.GetConnectionString("Default"));
connection.Open();
var result = await connection.ExecuteAsync(sql, entity);
return result;
}
这是通过id获取User
的方法:
public async Task<User> GetByIdAsync(string id)
{
string sql = "select * from users where id = @Id";
using var connection = new SqlConnection(_configuration.GetConnectionString("Default"));
connection.Open();
var result = await connection.QuerySingleOrDefaultAsync<User>(sql, new { Id = id });
return result;
}
User
数据在控制器中获取:
[HttpGet("{id}")]
public async Task<IActionResult> GetById(string id)
{
var data = await _unitOfWork.Users.GetByIdAsync(id);
if (data == null)
{
return Ok();
}
return Ok(data);
}
table 的列类型是 DATETIME
。
要么修改你的select语句,这样它returnsCreatedAt
列
select ... , created_at as [CreatedAt], ... from
或者确保您的应用程序在应用程序启动时调用此行
Dapper.DefaultTypeMap.MatchNamesWithUnderscores = true;