我试着做的每件事都不停地吐空。这是获取数据的方法
public List<Item> getItems(string item_name)
{
using (IDbConnection connection = new MySqlConnection(Helper.CnnVal("dbConn")))
{
connection.Open();
return connection.Query<Item>($"SELECT * FROM ITEMS WHERE itm_name = 'Jaje'").ToList();
}
}
注意:查询是为了测试而硬编码的,通常被存储过程替换,即使硬编码仍然返回null。
项目类
public class Item
{
public int _itm_id { get; set; }
public string _itm_name { get; set; }
public float _itm_price { get; set; }
}
我在.xaml.cs文件中也有以下代码,该文件在按按钮时运行
List<Item> items = new List<Item>();
items = da.getItems(txtboxItemNameSearch.Text.Trim());
它总是返回\u itm\u id=0、\u itm\u name=null、\u itm\u price=0。连接已打开,插入方法工作正常。行不是空的。我从一个运行良好的查询中复制了select硬编码语句。
这是table
CREATE TABLE `items` (
`itm_id` INT(255) NOT NULL AUTO_INCREMENT,
`itm_name` VARCHAR(255) NOT NULL,
`itm_price` FLOAT(8,2) NOT NULL,
PRIMARY KEY (`itm_id`),
UNIQUE INDEX `itm_name` (`itm_name`)
)
2条答案
按热度按时间7nbnzgx91#
dapper中内置的Map器的默认处理要求类属性名与列名匹配或用下划线分隔。
例如,列
ItemName
将匹配属性ItemName
或者Item_Name
反之亦然。对于不遵循此方案的列,有更复杂的Map可用,如果您想走这条路线,请参阅前面的答案。我举了一个简单的例子。
sql语句
c级#
输出
c9x0cxw02#
您的数据库列名为
itm_id
,但您的c#类属性名为_itm_id
. 名称需要匹配,dapper才能从MySqlDataReader
行到c对象。将类更改为以下值,Map应成功: