Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Dapper在从数据库中进行选择时正在访问我的类的所有属性,即使它不应该这样做_C#_Asp.net Core_System.text.json - Fatal编程技术网

C# Dapper在从数据库中进行选择时正在访问我的类的所有属性,即使它不应该这样做

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

我使用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, 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 });