{“违反PRIMARY KEY约束'PK_FeedBack'。无法插入 对象'dbo.FeedBack'中的重复键。重复的键值是 (0)。\ r \ n声明已经终止。“}
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; }
}
答案 0 :(得分:5)
我认为你的身份证需要
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
并确保将ID设置为数据库中的标识列。
答案 1 :(得分:0)
使用[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
自动生成ID或自己生成ID(必须是唯一的)。
答案 2 :(得分:0)
您提供的代码示例未显示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
。