我有一个更新方法:
public class User
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string City { get; set; }
[Column(TypeName = "jsonb")]
}
public async Task<bool> Update(int id, UserRequest user)
{
var result = await _context.Users.Where(x => x.Id == id).FirstOrDefaultAsync();
var cities = new List<string>();
cities.Add("New York");
cities.Add("London");
result = new Users()
{
Id = result.Id,
FirstName = user.FirstName,
LastName = user.LastName,
City = JsonSerializer.Serialize(cities)
};
// _context.Entry(result).Property(x => x.City).IsModified = true;
await _context.SaveChangesAsync();
return true;
}
FirstName和LastName的变化反映在db中,但不反映在City db中。
_context.Entry(result).Property(x => x.City).IsModified = true;
作为解决方案,通常使用Entry特性,但是Entry
属性为我抛出了一个错误:
计算数据库错误页内容时发生异常。
不显示数据库错误页面。
系统。InvalidOperationException:
StatusCode无法设置,因为响应已经开始。
我不明白问题的原因,但下面的更改解决了我的问题。
result = new Users()
{
Id = result.Id,
FirstName = user.FirstName,
LastName = user.LastName,
City = JsonSerializer.Serialize(cities)
};
result.FirstName = user.FirstName;
result.LastName = user.LastName ;
result.City = JsonSerializer.Serialize(cities);