实体框架 - 未正确填充DbSet

时间:2015-12-30 14:55:15

标签: database entity-framework seed seeding

我首先使用Entity Framework代码设计数据库并尝试使用数据对其进行种子设定。不幸的是,种子数据没有存储在数据库中。

调试显示未填充DbSet的问题。虽然有196个项目需要添加,但它只添加了8个,并且似乎没有任何模式能够让我了解原因。其他人根本没有被添加,即使每次调用Add(我也尝试使用AddOrUpdate并且结果相同)。

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

regionArray已成功播种到数据库。我只提供了完整countryArray的子​​集。

0 个答案:

没有答案
相关问题