Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 向上下文EF插入项目时出错_C#_Asp.net_Asp.net Mvc - Fatal编程技术网

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();}