【发布时间】:2014-04-23 04:00:42
【问题描述】:
我有一个表,它的主键由两列组成,这两列都不是自动递增的,我的 Dapper 插入(Dapper 扩展的一部分)在插入时失败,说两列中的第一列没有允许一个空值,即使我传入的值不是空值。
表Student:
StudentId (PK, not null) \_ (combined to form primary key)
StudentName (PK, not null) /
Active -- just another column
C#:
public class Student {
public int StudentId { get; set; }
public string StudentName { get; set; }
public bool Active { get; set; }
}
var newStudent = new Student { StudentId = 5, StudentName = "Joe", Active = true };
var insertSuccess = myConn.Insert<Student>(newStudent);
错误:
无法将值 NULL 插入到列“StudentId”、表“dbo.Student”中;列不允许空值。插入失败。
由于某种原因,Dapper 没有获得值为 5 的 StudentId。我是否必须为组合了 PK 的表或具有 非 PK 的表做一些特殊的事情自增?谢谢。
【问题讨论】:
-
Dapper 有插入扩展方法吗? Performing Inserts and Updates with Dapper。官方
myConn.Execute("INSERT INTO Student (StudentId, StudentName, Active) VALUES (@StudentId, @StudentName, @Active)", new { StudentId = 5, StudentName = "Joe", Active = true});有效吗? -
我正在使用 Dapper Extensions 进行插入,这就是引发错误的原因。我刚刚测试了您的建议,并且确实有效。希望只使用扩展方法,因为要输入的文本要少得多。
-
可以贴一下Insert扩展方法代码吗?是这个吗:github.com/tmsmith/Dapper-Extensions/blob/master/…?
标签: c# primary-key dapper dapper-extensions