我有一个从dropcreatepatabaseifmodelchanges继承的类。

public class SetupData : DropCreateDatabaseIfModelChanges<CyclingClubContext>
{
    protected override void Seed(CyclingClubContext context)
    {
        var _CycleType = new List<CycleType>
        {
            new CycleType { Type = "Leisure Cycle Type A" },
            new CycleType { Type = "Mountain Bike Type A" },
            new CycleType { Type = "Racer" },
            new CycleType { Type = "Leisure Cycle Type B" },
            new CycleType { Type = "Mountain Bike Type B" }                
        };            

        new List<CycleModel>
        {
            new CycleModel{ Model = "Challenge 26in", CycleType =  _CycleType.Single(r => r.Type == "Racer") },
            new CycleModel{ Model = "Challenge 27in", CycleType =  _CycleType.Single(r => r.Type == "Racer") },
            new CycleModel{ Model = "Muddy Fox Vortex", CycleType =  _CycleType.Single(r => r.Type == "Leisure Cycle Type A") },
            new CycleModel{ Model = "Laser 8", CycleType =  _CycleType.Single(r => r.Type == "Leisure Cycle Type B") },
            new CycleModel{ Model = "Silverfox 26in", CycleType =  _CycleType.Single(r => r.Type == "Mountain Bike Type B") }
        }.ForEach(IndividualRow => context.CycleModel.Add(IndividualRow));
    }        
}

我参加这堂课后,我发现...
创建了两个表。
1)周期模型(所有行正确插入)。
2)循环类型(剩下的一排要插入)[问题]。

山地自行车A型不会插入台式型环。
我认为,我需要修改代码,但我不知道该怎么做。

我不想在下面插入另一行,以便可以解决我的问题。

new CycleModel{ Model = "Testing...", CycleType =  _CycleType.Single(r => r.Type == "Mountain Bike Type A") }

请让我得到建议。

有帮助吗?

解决方案

种子()方法应以 context.SaveChanges().

就目前而言,这完全是奇怪的。

但是很明显,任何CycleModel都没有引用“山地自行车A”,这就是为什么它被排除在外。

您可能可以通过

 _CycleType.ForEach(IndividualRow => context.CycleType.Add(IndividualRow));

其他提示

你只是添加 CycleModelS上下文。当您添加一个 CycleModel EF将添加所有相关实体 CycleModel 实例继续引用。这里清单 CycleModel在上下文中添加的s与 CycleType “山地自行车A型”。因此没有添加。

您可以添加所有 CycleType首先。

    var _CycleType = new List<CycleType>
    {
        new CycleType { Type = "Leisure Cycle Type A" },
        new CycleType { Type = "Mountain Bike Type A" },
        new CycleType { Type = "Racer" },
        new CycleType { Type = "Leisure Cycle Type B" },
        new CycleType { Type = "Mountain Bike Type B" }                
    }.ForEach(c => context.CycleType.Add(c)); 

或者,您可以单独添加该实例。

context.CycleType.Add(_CycleType.Single(r => r.Type == "Mountain Bike Type A"));
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top