如何根据EF DbInitializer

时间:2019-05-05 19:57:45

标签: c# entity-framework linq

我有一个带有种子方​​法的DbInitializer类,该类正在将一些初始数据播种到我的数据库中,现在我将其他数据添加到播种中,并且此数据创建了狗和颜色之间的关系表。我正在尝试做以下编译器抱怨的事情。

      var breeds = new List<Breeds>()
        {
            new Breeds()
            {
                BreedId = Guid.NewGuid(),
                Name = "Belgian Malinois",
                AvgMinHeight = 22,
                AvgMaxHeight = 26,
                AvgMinWeight = 40,
                AvgMaxWeight = 80

            },
            new Breeds()
            {
                BreedId = Guid.NewGuid(),
                Name = "Dutch Shepherd",
                AvgMinHeight = 21,
                AvgMaxHeight = 25,
                AvgMinWeight = 42,
                AvgMaxWeight = 75
            }
        }; //end

        if (!_context.Breeds.Any())
        {
            _context.Breeds.AddRange(breeds);
            _context.SaveChanges();
        }

       //Breed Color Relational Data Seeding
       if (!_context.BreedColors.Any())
        {
            var breedColors = new List<BreedColors>()
            {
                new BreedColors()
                {
                    Id = Guid.NewGuid(),
                    BreedId = breeds.Where(x=>x.Name=="Dutch Shepherd").Single();
                    //ColorId = 
                }
            };

        }

1 个答案:

答案 0 :(得分:0)

找到了解决我问题的方法。尝试从基于相关对象的Id属性分配ID时,以下语法有效。

        var breedColors = new List<BreedColors>()
        {
            new BreedColors()
            {
                Id = Guid.NewGuid(),
                BreedId = breeds.Where(x=> x.Name=="Dutch Shepherd").Select(x=> x.BreedId).Single(),
                ColorId = colors.Where(b=>b.Name == "Wolfgray & Black").Select(a => a.Id).Single()
            }
        };