我有表用户
CREATE TABLE [User](
[Id] [int] primary key NOT NULL,
[Username] [nvarchar](50) NULL,
[EmailID] [nvarchar](50) NULL)
用户类
public class User
{
public int Id { get; set; }
public string Username { get; set; }
public string EmailID { get; set; }
}
码
var usr=new User();
usr.Id=1;
usr.Username="jhon";
usr.EmailID="j@gmail.com";
_dbConnection.Insert<User>(usr);
以上代码抛出null异常。表与身份正常工作。
堆栈追踪:
at Dapper.SimpleCRUD.Insert [TKey](IDbConnection connection,Object entityToInsert,IDbTransaction事务, Nullable`1 commandTimeout)
错误讯息:
发生了'System.Exception'类型的异常 Dapper.SimpleCRUD.dll但未在用户代码中处理 信息:无效的退货类型
答案 0 :(得分:7)
我今天遇到了同样的问题。这是因为您要指定要插入的类型,而不是指定将为int的返回类型。尽管如此,你甚至不需要指定类型。
您的代码可以简化为:
var usr=new User();
usr.Id=1;
usr.Username="jhon";
usr.EmailID="j@gmail.com";
_dbConnection.Insert(usr);
答案 1 :(得分:3)
以下是https://github.com/ericdc1/Dapper.SimpleCRUD
的正确答案[必需] - 默认情况下不插入[Key]属性,因为它应该是数据库自动增加的。如果要在插入期间自己指定值,可以将属性标记为[Key]和[Required]。
就我而言,我的主键是long / bigint:
[Key]
[Required]
public long MyPrimaryKey { get; set; }
T
中的Insert<T>
需要匹配返回类型(长):
connection.Insert<long>(model);