使用 Sqlite-net ExecuteQuery 方法在 C# 中没有为此对象定义无参数构造函数
no parameterless constructor defined for this object in C# using Sqlite-net ExecuteQuery method
我正在使用 Sqlite-net 处理 C# 应用程序。我的查询应该 return 单个列值,但是当我 运行 查询时我得到异常。我的代码是:
foreach(var group in groups)
{
var groupNameCmd = EdgeDatabase._connection.CreateCommand(@"SELECT Name from tblGroup WHERE Id = " + group.Id);
List<string> groupName = groupNameCmd.ExecuteQuery<string>();
}
在 "ExecuteQuery" 我得到异常 "no parameterless constructor defined for this object"。
您在创建 SQL 命令时使用了 group.Id
。此 group
应该是 class.
的一个实例
检查 class 中是否存在参数较少的构造函数,其中 group
是其实例。如果没有,请尝试向 class.
添加一个无参数构造函数
由于 akg179 的当前答案是 downvotet,我写下我的答案,因为我只是 运行 遇到同样的问题。
您不能 return 缺少无参数构造函数(如字符串)的类型。在这种情况下甚至不可能进行投影(使用 LINQ)。
仅select一个特定的列(或多个列)你仍然必须在你的方法调用中使用正确的类型(使用通用类型):
foreach(var group in groups)
{
var groupNameCmd = EdgeDatabase._connection.CreateCommand(@"SELECT Name from tblGroup WHERE Id = " + group.Id);
List<YourTblGroupType> groupName = groupNameCmd.ExecuteQuery<YourTblGroupType>();
}
您现在将获得 YourTblGroupType 的列表,但只会设置 Name 属性。
如果你真的只想得到字符串列表,你仍然可以在之后使用以下 lambda 表达式:
List<string> names = groupName.Select(p => p.Name).ToList()
我正在使用 Sqlite-net 处理 C# 应用程序。我的查询应该 return 单个列值,但是当我 运行 查询时我得到异常。我的代码是:
foreach(var group in groups)
{
var groupNameCmd = EdgeDatabase._connection.CreateCommand(@"SELECT Name from tblGroup WHERE Id = " + group.Id);
List<string> groupName = groupNameCmd.ExecuteQuery<string>();
}
在 "ExecuteQuery" 我得到异常 "no parameterless constructor defined for this object"。
您在创建 SQL 命令时使用了 group.Id
。此 group
应该是 class.
检查 class 中是否存在参数较少的构造函数,其中 group
是其实例。如果没有,请尝试向 class.
由于 akg179 的当前答案是 downvotet,我写下我的答案,因为我只是 运行 遇到同样的问题。
您不能 return 缺少无参数构造函数(如字符串)的类型。在这种情况下甚至不可能进行投影(使用 LINQ)。
仅select一个特定的列(或多个列)你仍然必须在你的方法调用中使用正确的类型(使用通用类型):
foreach(var group in groups)
{
var groupNameCmd = EdgeDatabase._connection.CreateCommand(@"SELECT Name from tblGroup WHERE Id = " + group.Id);
List<YourTblGroupType> groupName = groupNameCmd.ExecuteQuery<YourTblGroupType>();
}
您现在将获得 YourTblGroupType 的列表,但只会设置 Name 属性。
如果你真的只想得到字符串列表,你仍然可以在之后使用以下 lambda 表达式:
List<string> names = groupName.Select(p => p.Name).ToList()