2015-07-29 3 views
2

Я новичок в 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; } 
} 

Я понятия не имею, как решить это поэтому любые предложения будут очень полезны

+0

'User.Id' также должен быть столбец идентификаторов в базе данных , –

+0

Ah yes mark 'public int Id {get; задавать; } 'с' [Key] ' – 3dd

+0

Ну, мне удалось вставить первого пользователя, но затем, когда я пытаюсь вставить другой, кажется, что счетчик идентификаторов сбрасывается и он пытается сохранить нового пользователя с идентификатором 0 – Tautvydas

ответ

0

установить значение поля Id

или

определить поле Id, как Autoincrement

+0

Как я могу определить как автоинкремент? Я пробовал [DatabaseGenerated (DatabaseGeneratedOption.Identity)] – Tautvydas

+0

Вы делаете это в самой базе данных. В студии управления SQL. – Cyberdrew

Смежные вопросы