Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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
Database 实体框架-未正确填充数据库集_Database_Entity Framework_Seed_Seeding - Fatal编程技术网

Database 实体框架-未正确填充数据库集

Database 实体框架-未正确填充数据库集,database,entity-framework,seed,seeding,Database,Entity Framework,Seed,Seeding,我正在首先用实体框架代码设计一个数据库,并试图用数据为它播种。不幸的是,种子数据没有存储在数据库中 调试发现问题在于未填充DbSet。虽然有196项需要添加,但它只添加了8项,而且似乎没有任何模式可以告诉我为什么。其他的没有被添加,即使每次都调用Add(我也用AddOrUpdate尝试过,结果相同) var regionArray=new[] { 新区域{Id=Guid.NewGuid().ToString(),Name=“Europe”}, 新区域{Id=Guid.NewGuid().ToSt

我正在首先用实体框架代码设计一个数据库,并试图用数据为它播种。不幸的是,种子数据没有存储在数据库中

调试发现问题在于未填充DbSet。虽然有196项需要添加,但它只添加了8项,而且似乎没有任何模式可以告诉我为什么。其他的没有被添加,即使每次都调用Add(我也用AddOrUpdate尝试过,结果相同)

var regionArray=new[]
{
新区域{Id=Guid.NewGuid().ToString(),Name=“Europe”},
新区域{Id=Guid.NewGuid().ToString(),Name=“Asia”},
新区域{Id=Guid.NewGuid().ToString(),Name=“北美”},
新区域{Id=Guid.NewGuid().ToString(),Name=“South America”},
新区域{Id=Guid.NewGuid().ToString(),Name=“中美洲”},
新区域{Id=Guid.NewGuid().ToString(),Name=“Africa”},
新区域{Id=Guid.NewGuid().ToString(),Name=“Middle East”},
新区域{Id=Guid.NewGuid().ToString(),Name=“Oceania”}
};
var countryArray=new[]
{
新国家{Id=Guid.NewGuid().ToString(),Name=“俄罗斯”,Region=regionArray[0]},
新国家{Id=Guid.NewGuid().ToString(),Name=“乌克兰”,Region=regionArray[0]},
新国家{Id=Guid.NewGuid().ToString(),Name=“France”,Region=regionArray[0]},
新国家{Id=Guid.NewGuid().ToString(),Name=“西班牙”,Region=regionArray[0]},
新国家{Id=Guid.NewGuid().ToString(),Name=“瑞典”,Region=regionArray[0]},
新国家{Id=Guid.NewGuid().ToString(),Name=“挪威”,Region=regionArray[0]},
新国家{Id=Guid.NewGuid().ToString(),Name=“Germany”,Region=regionArray[0]},
新国家{Id=Guid.NewGuid().ToString(),Name=“芬兰”,Region=regionArray[0]},
新国家{Id=Guid.NewGuid().ToString(),Name=“波兰”,Region=regionArray[0]},
新国家{Id=Guid.NewGuid().ToString(),Name=“意大利”,Region=regionArray[0]},
新国家{Id=Guid.NewGuid().ToString(),Name=“英国”,Region=regionArray[0]},
新国家{Id=Guid.NewGuid().ToString(),Name=“罗马尼亚”,Region=regionArray[0]},
新国家{Id=Guid.NewGuid().ToString(),Name=“哈萨克斯坦”,Region=regionArray[0]},
新国家{Id=Guid.NewGuid().ToString(),Name=“希腊”,Region=regionArray[0]},
新国家{Id=Guid.NewGuid().ToString(),Name=“保加利亚”,Region=regionArray[0]},
新国家{Id=Guid.NewGuid().ToString(),Name=“冰岛”,Region=regionArray[0]},
新国家{Id=Guid.NewGuid().ToString(),Name=“匈牙利”,Region=regionArray[0]},
新国家{Id=Guid.NewGuid().ToString(),Name=“葡萄牙”,Region=regionArray[0]},
新国家{Id=Guid.NewGuid().ToString(),Name=“塞尔维亚”,Region=regionArray[0]},
新国家{Id=Guid.NewGuid().ToString(),Name=“奥地利”,Region=regionArray[0]},
新国家{Id=Guid.NewGuid().ToString(),Name=“捷克共和国”,Region=regionArray[0]},
};
for(int i=0;ii.Id==item.Id).FirstOrDefault();
if(现有!=null)
{
item.CreatedAt=existing.CreatedAt;
}
设置。添加(项目);
}

regionArray已成功植入数据库。我只提供了完整countryArray的一个子集。

是否提供了正确的数据库集?这实际上是在哪里调用的?它在配置类中。我正在使用Nuget控制台命令更新数据库。它应该是正确的数据库集,因为它正在将“一些”内容保存到其中。出于某种原因,它并没有完成所有的工作。我做了更多的调查,出于某种原因,似乎正在发生的事情是,它不是向数据库集添加新记录,而是替换已经存在的记录。
        var regionArray = new[]
        {
            new Region {Id = Guid.NewGuid().ToString(), Name = "Europe" },
            new Region { Id = Guid.NewGuid().ToString(), Name = "Asia" },
            new Region { Id = Guid.NewGuid().ToString(), Name = "North America" },
            new Region { Id = Guid.NewGuid().ToString(), Name = "South America" },
            new Region { Id = Guid.NewGuid().ToString(), Name = "Central America" },
            new Region { Id = Guid.NewGuid().ToString(), Name = "Africa" },
            new Region { Id = Guid.NewGuid().ToString(), Name = "Middle East" },
            new Region {Id = Guid.NewGuid().ToString(), Name = "Oceania" }
        };

        var countryArray = new[]
        {
            new Country {Id=Guid.NewGuid().ToString(), Name="Russia", Region = regionArray[0] },
            new Country {Id=Guid.NewGuid().ToString(), Name="Ukraine", Region = regionArray[0] },
            new Country {Id=Guid.NewGuid().ToString(), Name="France", Region = regionArray[0] },
            new Country {Id=Guid.NewGuid().ToString(), Name="Spain", Region = regionArray[0] },
            new Country {Id=Guid.NewGuid().ToString(), Name="Sweden", Region = regionArray[0] },
            new Country {Id=Guid.NewGuid().ToString(), Name="Norway", Region = regionArray[0] },
            new Country {Id=Guid.NewGuid().ToString(), Name="Germany", Region = regionArray[0] },
            new Country {Id=Guid.NewGuid().ToString(), Name="Finland", Region = regionArray[0] },
            new Country {Id=Guid.NewGuid().ToString(), Name="Poland", Region = regionArray[0] },
            new Country {Id=Guid.NewGuid().ToString(), Name="Italy", Region = regionArray[0] },
            new Country {Id=Guid.NewGuid().ToString(), Name="United Kingdom", Region = regionArray[0] },
            new Country {Id=Guid.NewGuid().ToString(), Name="Romania", Region = regionArray[0] },
            new Country {Id=Guid.NewGuid().ToString(), Name="Kazakhstan", Region = regionArray[0] },
            new Country {Id=Guid.NewGuid().ToString(), Name="Greece", Region = regionArray[0] },
            new Country {Id=Guid.NewGuid().ToString(), Name="Bulgaria", Region = regionArray[0] },
            new Country {Id=Guid.NewGuid().ToString(), Name="Iceland", Region = regionArray[0] },
            new Country {Id=Guid.NewGuid().ToString(), Name="Hungary", Region = regionArray[0] },
            new Country {Id=Guid.NewGuid().ToString(), Name="Portugal", Region = regionArray[0] },
            new Country {Id=Guid.NewGuid().ToString(), Name="Serbia", Region = regionArray[0] },
            new Country {Id=Guid.NewGuid().ToString(), Name="Austria", Region = regionArray[0] },
            new Country {Id=Guid.NewGuid().ToString(), Name="Czech Republic", Region = regionArray[0] },
};


        for (int i = 0; i < countryArray.Length; i++)
        {
            AddOrUpdatePreservingCreatedAt(context.Countries, countryArray[i]);
        }
}

private void AddOrUpdatePreservingCreatedAt<T>(DbSet<T> set, T item) where T : EntityData
    {
        var existing = set.Where(i => i.Id == item.Id).FirstOrDefault();
        if (existing != null)
        {
            item.CreatedAt = existing.CreatedAt;
        }
        set.Add(item);
    }