2014-12-20 2 views
1

У меня есть ошибка, когда вставные детали в моем семени МетодОшибка при вставки элементов в контексте EF

public class ContexInitializerDropAlways : DropCreateDatabaseAlways<DomainDbContext> 
    { 
     protected override void Seed(DomainDbContext context) 
     { 
      base.Seed(context); 

      List<Tour> tours = new List<Tour> 
      { 
       new Tour 
       { 
        Price = 800.00m, 
        StartedOn = DateTime.Now, 
        EndedOn = DateTime.Now.AddMonths(1), 
        Nights = 15 
       }, 
       new Tour 
       { 
        Price = 650.00m, 
        StartedOn = DateTime.Now.AddDays(10), 
        EndedOn = DateTime.Now.AddMonths(2), 
        Nights = 10 
       }, 
       new Tour 
       { 
        Price = 350m, 
        StartedOn = DateTime.Now.AddDays(5), 
        EndedOn = DateTime.Now.AddDays(5), 
        Nights = 5 
       } 
      }; 

      List<Country> countries = new List<Country> 
      { 
       new Country 
       { 
        Name = "Австрия" 
       }, 
       new Country 
       { 
        Name = "Греция" 
       }, 
       new Country 
       { 
        Name = "Турция" 
       } 
      }; 

      countries[0].Tours.Add(tours[0]); 
      countries[1].Tours.Add(tours[1]); 
      countries[2].Tours.Add(tours[2]); 

      context.Countries.AddRange(countries); 
      context.SaveChanges();    
     } 
    } 

Error: Violation of PRIMARY KEY constraint 'PK_dbo.Countries'. Cannot insert duplicate key in object 'dbo.Countries'. The duplicate key value is (00000000-0000-0000-0000-000000000000). The statement has been terminated.

+0

У вас есть первичный ключ в таблице? –

+0

Да, знаю. http://goo.gl/njrpWu http://goo.gl/yWeWFX – atosdo

+0

Вы пробовали это? новый Страна { Имя = "..."; Id = Guid.NewGuid(); } – Alexey

ответ

1

В вашем Country классе, пожалуйста, добавьте атрибут ключа.

public class Country 
{ 
    [Key] 
    public Guid Id { get; set; } 

Затем в коде:

List<Country> countries = new List<Country> 
     { 
      new Country 
      { 
       Id = Guid.NewGuid(); 
       Name = "Австрия" 
      }, 
      // etc. 
     }; 

example.

0

Существует решение:

public class CountryConfiguration : EntityTypeConfiguration<Country> 
{ 
    public CountryConfiguration() 
    { 
     Property(c => c.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); 
    } 
} 
Смежные вопросы