实体框架没有保存jsonb属性



我有一个更新方法:

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);

相关内容

  • 没有找到相关文章

最新更新