C# Dapper在从数据库中进行选择时正在访问我的类的所有属性,即使它不应该这样做
我使用jquerydatatables来显示数据表。该表仅显示my SqlFunction中的3列 我用的是这样的简洁:C# Dapper在从数据库中进行选择时正在访问我的类的所有属性,即使它不应该这样做,c#,asp.net-core,system.text.json,C#,Asp.net Core,System.text.json,我使用jquerydatatables来显示数据表。该表仅显示my SqlFunction中的3列 我用的是这样的简洁: IQueryable<MyClass> data = null; // Execute my sql statement and map the resultant fields into MyClass properties data = sqlCon.Query<MyClass>("SELECT field1, field2, fi
IQueryable<MyClass> data = null;
// Execute my sql statement and map the resultant fields into MyClass properties
data = sqlCon.Query<MyClass>("SELECT field1, field2, field3, FROM dbo.MySqlFunction()", selector.Parameters).AsQueryable();
这不是由Dapper引起的,而是由
JsonSerializer
访问属性引起的
如果将
[JsonIgnore]
属性添加到属性中,则JsonSerializer
将无法访问该属性。这不是由Dapper引起的,而是由JsonSerializer
访问属性引起的
如果将
[JsonIgnore]
属性添加到属性中,则JsonSerializer
将无法访问该属性。在getter中放置一个断点,然后运行它。然后在堆栈被命中时共享堆栈跟踪。我有代码可以从Address类中的缓存或db读取我们的状态,这就是我发现这种情况的原因。
向我们显示该代码。进入Visual Studio选项并关闭“调试/仅我的代码”,然后可以看到完整的堆栈跟踪,json序列化可以做到这一点。使用[JsonIgnore]
属性。在getter中放置一个断点,然后运行它。然后在堆栈被命中时共享堆栈跟踪。我有代码可以从Address类中的缓存或db读取我们的状态,这就是我发现这种情况的原因。
向我们显示该代码。进入Visual Studio选项并关闭“调试/仅我的代码”,然后可以看到完整的堆栈跟踪,json序列化可以做到这一点。使用[JsonIgnore]
属性。我发现它必须是[System.Text.json.Serialization.JsonIgnore]中的属性。谢谢。看起来你只是复制了人们在评论中已经说过的话…@JHBonarius正确,其他人确实提到过,但一旦我们得到堆栈跟踪,这是很明显的。答案应该放在答题贴上,你误读了qa。op询问,当他回答评论中的问题时,他自己是否应该发布一个答案。这并不是说你应该抄袭别人的答案。也就是说,imho应该鼓励@mxmissile发布一个答案。我发现它必须是[System.Text.Json.Serialization.JsonIgnore]中的答案。谢谢。看起来你只是复制了人们在评论中已经说过的话…@JHBonarius正确,其他人确实提到过,但一旦我们得到堆栈跟踪,这是很明显的。答案应该放在答题贴上,你误读了qa。op询问,当他回答评论中的问题时,他自己是否应该发布一个答案。这并不是说你应该抄袭别人的答案。也就是说,imho您应该鼓励@MXIM弹发布答案。
public List<Address> MailingAddresses
{
get
{
if (_MailingAddresses == null)
{
_MailingAddresses = new List<Address>();
}
if (_MailingAddresses.Count == 0)
{
Address temp = new Address();
_MailingAddresses.Add(temp);
}
return _MailingAddresses;
}
set
{
_MailingAddresses = value;
}
}
return Json(new { draw = draw, recordsFiltered = recordsFiltered, recordsTotal = recordsFiltered, data = recs });