gpt4 book ai didi

c# - KeyValuePair - 没有无参数构造函数?

转载 作者:太空狗 更新时间:2023-10-29 22:14:46 25 4
gpt4 key购买 nike

我有一个具有 KeyValuePair 类型属性的对象。

我想从数据库中读取一些数据并将结果存储在这个 KeyValuePair 类型字段中。

myObject.KeyValuePairs = ctx.ExecuteQuery<KeyValuePair<String, int>>
("Select " +
"[" + q.Name + "] As [Key]" +
", Count([" + q.Name + "]) As [Value] From SomeTable" +
" Group By [" + q.Name + "]").ToList();

myObject.KeyValuePairsList<KeyValuePair<String, int>>

当我尝试读取记录时出现以下异常:

“System.Collections.Generic.KeyValuePair`2[System.String,System.Int32]”类型必须声明默认(无参数)构造函数,以便在映射期间构造。

我在一个类中有一个默认构造函数,但这并不能解决问题。看起来好像它不知道如何构造 KeyValuePair 对象。它没有默认构造函数吗?困惑..

谢谢

最佳答案

它确实有一个公共(public)的无参数构造函数,因为 KeyValuePair<TKey, TValue>是一个结构,所有结构都有隐式公共(public)无参数构造函数。

问题是 EF 无法通过反射找到它,因为反射不会返回 struct 的默认构造函数。

这就是为什么 EF 报告找不到它(它无法通过反射找到它)。

此外,即使您可以通过反射使用默认构造函数,KeyValuePair<TKey, TValue>是不可变的,所以你不能设置 KeyValue施工后。

要解决你的问题,定义一个自定义类

class NameCount {
public string Name { get; set; }
public int Count { get; set; }
}

并更改您的查询以返回 Key作为NameValue作为Count .我假设您可以为您的自定义类想出一个更好的名称。

关于c# - KeyValuePair - 没有无参数构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6202696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com