{“违反主键约束‘PK_ been’。不能在对象'dbo.FeedBack‘中插入重复键。重复的键值是(0).\r\nThe语句已终止。”}
public int InsertFeedBack(FeedBack fb)
{
db.FeedBacks.Add(fb);
db.SaveChanges();
return fb.ID;
}public JsonResult Send(string name, string mobile, string address, string email, string content)
{
var feedback = new FeedBack();
feedback.Name = name;
feedback.Email = email;
feedback.CreatDate = DateTime.Now;
feedback.Phone = mobile;
feedback.Content = content;
feedback.Address = address;
var id = new LHeDAO().InsertFeedBack(feedback);
if (id > 0)
{
return Json(new
{
status = true
});
//send mail
}
else
return Json(new
{
status = false
});
}public partial class FeedBack
{
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int ID { get; set; }
[Required]
[StringLength(50)]
public string Name { get; set; }
[Required]
[StringLength(50)]
public string Phone { get; set; }
[Required]
[StringLength(50)]
public string Email { get; set; }
[Required]
[StringLength(50)]
public string Address { get; set; }
[Required]
[StringLength(50)]
public string Content { get; set; }
public DateTime? CreatDate { get; set; }
public bool? status { get; set; }
}发布于 2016-06-15 11:58:51
我想你的身份证需要
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]并确保ID设置为DB中的identity列。
发布于 2016-06-15 12:08:57
要么使用[DatabaseGenerated(DatabaseGeneratedOption.Identity)]自动生成ID,要么自己生成ID (必须是唯一的)。
发布于 2016-06-15 13:41:44
您提供的代码示例没有显示ID的任何初始化
var feedback = new FeedBack();
feedback.Name = name;
feedback.Email = email;
feedback.CreatDate = DateTime.Now;
feedback.Phone = mobile;
feedback.Content = content;
feedback.Address = address;
var id = new LHeDAO().InsertFeedBack(feedback);**并且明确声明数据库不应该生成它:
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int ID { get; set; }因此,默认情况下,ID被初始化为0,数据库在尝试插入时返回该错误,因为表中已经有ID为0的行。要解决这个问题,您需要允许数据库为ID生成值,或者在尝试执行插入之前使用唯一值初始化ID。
https://stackoverflow.com/questions/37834732
复制相似问题