无法向表中添加多个用户。标识插入设置为关闭

时间:2015-04-20 17:40:51

标签: c# mysql sql-server asp.net-mvc visual-studio-2013

这是我点击表单上的提交以添加新用户时出现的错误。我试图通过用户表上的查询将IDENTITY设置为ON,但它没有帮助。当我不自己插入数据时,我不知道如何设置它。有什么建议?

这是我的控制器:

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Register(User U)
    {
        if (ModelState.IsValid)
        {
            using (SomeEntities dc = new SomeEntities ())
            {
                //you should check duplicate registration here 
                dc.Users.Add(U);
                dc.SaveChanges();
                ModelState.Clear();
                U = null;
                ViewBag.Message = "Successfully Registration Done";
            }
        }
        return View(U);
    }

这是我的用户模型:

public partial class User
{
    public User()
    {
        this.Posts = new HashSet<Post>();
        this.PostFeedbacks = new HashSet<PostFeedback>();
        this.ProjectUsers = new HashSet<ProjectUser>();
        this.UserWithdraws = new HashSet<UserWithdraw>();
    }

    public decimal user_id { get; set; }

    [Required(ErrorMessage = "Please provide username", AllowEmptyStrings = false)]
    public string user_name { get; set; }

    [Required(ErrorMessage="Please provide Password", AllowEmptyStrings=false)]
    [DataType(System.ComponentModel.DataAnnotations.DataType.Password)]
    [StringLength(50, MinimumLength = 8, ErrorMessage = "Password must be 8 char long.")]
    public string user_pass { get; set; }

    [Compare("user_pass", ErrorMessage = "Confirm password dose not match.")]
    [DataType(System.ComponentModel.DataAnnotations.DataType.Password)]
    public string confirm_user_pass { get; set; }

    [Required(ErrorMessage = "Please provide full name", AllowEmptyStrings = false)]
    public string full_name { get; set; }

2 个答案:

答案 0 :(得分:2)

您是否需要明确设置标识,或者您是否可以让db在插入时设置标识?如果是后者,只需将IDENTITY_INSERT设置为OFF并确保将标识列设置为其默认值。

此外,请确保标记您的标识列。离。

[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID {get; protected set;}

答案 1 :(得分:0)

我在使用LINQ之前已经有了这个,因为我没有在表格设计中将主键标识设置为“Is Identity”。