Dapper.SimpleCRUD插入没有身份的问题

时间:2015-12-16 05:13:23

标签: c# dapper dapper-simplecrud

我有表用户

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但未在用户代码中处理   信息:无效的退货类型

2 个答案:

答案 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);