【发布时间】:2016-07-29 09:19:52
【问题描述】:
我写了一个程序快一年了,他可以正常工作,但我最近在数据库中添加了一个新项目,但出现错误
违反主键约束“PK_dbo.Accounts”。无法在对象“dbo.Accounts”中插入重复键。重复键值为(110603267)。
我遇到过。没有发生什么特别的事情,我不知道为什么会出现这个错误。 [Key] 的 ID 字段,类型为 long。并且是在数据库中的身份。 这里的意思是,每当您尝试添加新的 Id 项(“110603267”)时,都会发生更改,并且错误是另一个 ID。
使用 ASP.NET MVC,编写 EF。请告知如何解决此问题。感激不尽
我的模型:
public partial class Account
{
[Key]
public long ID { get; set; }
[Required(ErrorMessage = "*")]
[System.Web.Mvc.Remote("CheckExistUser", "ManageAccount", ErrorMessage = "این نام کاربری قبلا ثبت شده", HttpMethod = "POST")]
[StringLength(10, MinimumLength = 10, ErrorMessage = "کد ملی 10 رقم می باشد")]
[Display(Name = "کد ملی")]
public string Name { get; set; }
[Display(Name = "رمز عبور")]
[Required(ErrorMessage = "*")]
[MinLength(6, ErrorMessage = "حداقل 6 کاراکتر")]
//[DataType(DataType.Password)]
public string Password { get; set; }
[Display(Name = "تکرار رمز عبور")]
[Required(ErrorMessage = "*")]
// [DataType(DataType.Password)]
[System.Web.Mvc.Compare("Password", ErrorMessage = "عدم تطابق کلمه عبور")]
public string PasswordRe { get; set; }
[Display(Name = "امضا")]
public string Signature { get; set; }
[Display(Name="ایمیل")]
[System.Web.Mvc.Remote("CheckExistEmail", "ManageAccount", ErrorMessage = "این ایمیل قبلا ثبت شده", HttpMethod = "POST")]
public string Email { get; set; }
[ForeignKey("GroupID")]
public virtual Group Group { get; set; }
public long? GroupID { get; set; }
[ForeignKey("ActorID")]
public virtual Actor Actor { get; set; }
public long? ActorID { get; set; }
[Display(Name = "شماره همراه")]
[Required(ErrorMessage = "*")]
public string Mobile { get; set; }
}
我的代码:
var tempAccount = new Account
{
Name = tempCodeMeli,
Password = SecurityManager.HashData(mobile),
PasswordRe = SecurityManager.HashData(mobile),
Mobile = mobile,
IsActive = true,
_ Date = DateTime.Now
};
dbContext.Accounts.Add(tempAccount);
dbContext.SaveChanges();
【问题讨论】:
-
需要更多细节,尤其是现有代码。
-
你能显示一些代码吗?听起来您正在尝试插入一个具有已存在但需要唯一的 Id 的实体。
-
不要只粘贴所有您的代码。制作minimal reproducible example 来说明您的问题。
-
写下您的 Account 实体和相关的 db DbContext 部分以及您如何调用它。
-
重复键意味着您尝试将一系列数据插入到与现有 PK 相同的实体中。通常在执行
DBContext.SaveChanges时抛出。
标签: c# sql-server asp.net-mvc entity-framework