C# 向上下文EF插入项目时出错
在种子方法中插入项时出错C# 向上下文EF插入项目时出错,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,在种子方法中插入项时出错 public class ContexInitializerDropAlways : DropCreateDatabaseAlways<DomainDbContext> { protected override void Seed(DomainDbContext context) { base.Seed(context); List<Tour> tours
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();
}
}
公共类ContexiInitializedRopAlways:DropCreateDatabaseAlways
{
受保护的覆盖无效种子(DomainDbContext上下文)
{
种子(上下文);
列表旅游=新列表
{
新旅游
{
价格=800.00米,
StartedOn=DateTime。现在,
EndedOn=DateTime.Now.AddMonths(1),
晚上=15
},
新旅游
{
价格=650.00米,
StartedOn=DateTime.Now.AddDays(10),
EndedOn=DateTime.Now.AddMonths(2),
晚上=10
},
新旅游
{
价格=3.5亿美元,
StartedOn=DateTime.Now.AddDays(5),
EndedOn=DateTime.Now.AddDays(5),
晚上=5
}
};
列表国家=新列表
{
新国家
{
Name=“Аббб”
},
新国家
{
Name=“Гццц”
},
新国家
{
Name=“ццц”
}
};
国家[0]。旅游。添加(旅游[0]);
国家[1].Tours.Add(Tours[1]);
countries[2].Tours.Add(Tours[2]);
context.Countries.AddRange(国家);
SaveChanges();
}
}
错误:违反主键约束“PK_dbo.Countries”。不能
在对象“dbo.Countries”中插入重复密钥。复制钥匙
值为(00000000-0000-0000-0000-000000000000)。该声明已经发布
已经终止
在您的
Country
类中,请添加键属性
public class Country
{
[Key]
public Guid Id { get; set; }
然后在代码中:
List<Country> countries = new List<Country>
{
new Country
{
Id = Guid.NewGuid();
Name = "Австрия"
},
// etc.
};
List countries=新列表
{
新国家
{
Id=Guid.NewGuid();
Name=“Аббб”
},
//等等。
};
有一个解决方案:
public class CountryConfiguration : EntityTypeConfiguration<Country>
{
public CountryConfiguration()
{
Property(c => c.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
}
}
公共类CountryConfiguration:EntityTypeConfiguration
{
公共配置()
{
属性(c=>c.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
}
}
表中有主键吗?有。你试过这个吗?新国家/地区{Name=“…”;Id=Guid.NewGuid();}