首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在对象“dbo.FeedBack”中插入重复键

无法在对象“dbo.FeedBack”中插入重复键
EN

Stack Overflow用户
提问于 2016-06-15 11:53:57
回答 3查看 1.1K关注 0票数 0

{“违反主键约束‘PK_ been’。不能在对象'dbo.FeedBack‘中插入重复键。重复的键值是(0).\r\nThe语句已终止。”}

代码语言:javascript
复制
public int InsertFeedBack(FeedBack fb)
    {
        db.FeedBacks.Add(fb);
        db.SaveChanges();

        return fb.ID;
    }
代码语言:javascript
复制
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
            });
    }
代码语言:javascript
复制
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; }
}
EN

回答 3

Stack Overflow用户

发布于 2016-06-15 11:58:51

我想你的身份证需要

代码语言:javascript
复制
 [DatabaseGenerated(DatabaseGeneratedOption.Identity)]

并确保ID设置为DB中的identity列。

票数 5
EN

Stack Overflow用户

发布于 2016-06-15 12:08:57

要么使用[DatabaseGenerated(DatabaseGeneratedOption.Identity)]自动生成ID,要么自己生成ID (必须是唯一的)。

票数 0
EN

Stack Overflow用户

发布于 2016-06-15 13:41:44

您提供的代码示例没有显示ID的任何初始化

代码语言:javascript
复制
    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);**

并且明确声明数据库不应该生成它:

代码语言:javascript
复制
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int ID { get; set; }

因此,默认情况下,ID被初始化为0,数据库在尝试插入时返回该错误,因为表中已经有ID为0的行。要解决这个问题,您需要允许数据库为ID生成值,或者在尝试执行插入之前使用唯一值初始化ID

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37834732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档