Я новичок в Entity Framework. На данный момент у меня проблема - когда я пытаюсь вставить новый объект User
в базу данных (с использованием методы RegisterNewUser
), я получаю сообщение об ошибке:Ошибка структуры Entity Framework при сохранении изменений
Violation of PRIMARY KEY constraint 'PK__Users__3214EC07705D23AE'. Cannot insert duplicate key in object 'dbo.Users'. The duplicate key value is (0).
Есть некоторые подобные вопросы здесь, но ни один из этих ответов помогли мне.
public void RegisterNewUser(String uName, String uPass, String fName, String lName, String email)
{
User user = new User();
user.Username = uName;
user.Password = uPass;
user.FirstName = fName;
user.LastName = lName;
user.Email = email;
Time time = new Time();
time.Time1 = DateTime.Now;
user.Times.Add(time);
ur.AddUser(user);
}
Time
и User
объекты:
public partial class Time
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public int UserId { get; set; }
public System.DateTime Time1 { get; set; }
public virtual User User { get; set; }
}
public partial class User
{
public User()
{
this.Times = new HashSet<Time>();
}
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Username { get; set; }
public string Password { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public virtual ICollection<Time> Times { get; set; }
}
Repository файл
public class UsersRepository
{
UsersDBContext userDBContext = new UsersDBContext();
public List<User> GetUsers()
{
return userDBContext.Users.Include("Times").ToList();
}
public void AddUser(User user)
{
userDBContext.Users.Add(user);
userDBContext.SaveChanges();
}
}
И контекст
public partial class UsersDBContext : DbContext
{
public UsersDBContext() : base("name=UsersDBContext")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public virtual DbSet<Time> Times { get; set; }
public virtual DbSet<User> Users { get; set; }
}
Я понятия не имею, как решить это поэтому любые предложения будут очень полезны
'User.Id' также должен быть столбец идентификаторов в базе данных , –
Ah yes mark 'public int Id {get; задавать; } 'с' [Key] ' – 3dd
Ну, мне удалось вставить первого пользователя, но затем, когда я пытаюсь вставить другой, кажется, что счетчик идентификаторов сбрасывается и он пытается сохранить нового пользователя с идентификатором 0 – Tautvydas