C# 利用DapperExtensions操作sqlserver数据库 无法insert和update
最近在做WebAPI后台开发,在利用DapperExtensions扩展IDBConnection时,出现不能insert和update,搞来搞去一直是主键ID自增的问题。
entity为
public class baseLightStu
{
public int Id { get; set; }
public string tunnelName { get; set; }
}
sqlserver中建立数据表,并且将Id设置为主键以及标识符自增。
问题
使用如下代码进行insert操作时,提示无法将system.Int64转换为Int32 错误,为此折腾很久
using (DbConnection conn = new SqlConnection(SocketHelper.connStr))
{
conn.Open();
bool updateflg = false;
baseLightStu tmp = new baseLightStu();
tmp.Id = 0;
tmp.tunnelName = "测试";
conn.Insert(tmp);
conn.Close();
}
在尝试将entity中的Id删除后,数据库中表不改变后,可以正常插入,但是无法进行update。仔细思考一下,可以明显地想到是由于程序获取不到数据库中的Id主键,无法进行更新数据库,在这里又卡啦好久。
经过对比官方提供的教程,又重新一步步操作,依然有问之前的问题。
dapper-extension官方教程
在多番尝试后,灵机一动,看一下NuGet中的dapperextension版本,果然是最新版1.7.0(20210702更新),而它的上一版是1.6.3(20170809),于是乎,后面大家应该就知道怎么操作啦!
在这里真的不得不吐槽一下,新版本为啥不支持insert和主键自增这种情况呢。