为什么 Newtonsoft.Json.JsonConvert.SerializeObject 将“_repository”添加到我列表中的每个项目?

凯西克鲁克斯顿

我有一个简单的方法,如下所示:

public partial class PEUploadBookHistory: DataAccessBase
{
    public string Get()
    {
        List<PEUploadBookHistory> histories = _repository.GetList<PEUploadBookHistory>().ToList();
        string jsonHistories = JsonConvert.SerializeObject(histories);
        return jsonHistories;
    }
    
    // Other methods like Post and Put, etc
}

并且_repository.GetList是一个 Dapper 存储库:

public IEnumerable<T> GetList<T>()
{
    IEnumerable<T> entities;
    using (var connection = OpenConnection(_connectionStringName))
    {
        entities = connection.GetList<T>();
    }
    return entities;
}

第一个方法返回的 json 字符串如下所示:

[
  {
    "_repository": {},
    "UploadBookHistoryId": 5467,
    ... other properties ...
  }
]

我不明白为什么要添加"_repository": {},. 不应该PEUploadBookHistory吗?这是从哪里来的?为什么?我该如何改变它?

这是部分的其余部分:

[Table("PE_UploadBookHistory")]
public partial class PEUploadBookHistory
{
    [Key]
    public virtual int UploadBookHistoryId { get; set; }
    ... other columns ...
}

这是 DataAccessBase

public class DataAccessBase
{
    public Repository _repository = new Repository("SQLConnection");
}
用户47589

装饰这个属性JsonIgnore

[JsonIgnore]
public Repository _repository = new Repository("SQLConnection");

或者,您可以将其设为非公开。

或者,对数据库和 JSON 使用不同的模型。

如果这些解决方案都不起作用,您可以使用自定义 Json 合同类,这将需要更多的工作来组合。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章