【发布时间】:2014-11-20 13:11:59
【问题描述】:
当我在我的 Seed 方法中运行以下代码时,包管理器控制台不断抛出“序列不包含元素”错误。
context.Countries.AddOrUpdate(c => c.Name,
new Country { IsInUse = true, Name = "Botswana", Alpha2 = "BW", Alpha3 = "BWA" },
new Country { IsInUse = true, Name = "Lesotho", Alpha2 = "LS", Alpha3 = "LSO" },
new Country { IsInUse = true, Name = "Mozambique", Alpha2 = "MZ", Alpha3 = "MOZ" },
new Country { IsInUse = true, Name = "South Africa", Alpha2 = "ZA", Alpha3 = "ZAF" },
new Country { IsInUse = true, Name = "Swaziland", Alpha2 = "SZ", Alpha3 = "SWZ" },
new Country { IsInUse = true, Name = "Zimbabwe", Alpha2 = "ZW", Alpha3 = "ZWE" }
);
Country za = context.Countries.Where(x => x.Name == "South Africa").First();
我需要获取南非国家对象来执行其余步骤(未显示)。
如果我使用 FirstOrDefault 或 SingleOrDefault 系统会返回 null,这会中断其余步骤。
为什么当我明确添加数据时,我的上下文返回 null。
我尝试了 SaveChanges,但这会导致其他错误。
谢谢
【问题讨论】:
-
不是答案,但您可以重写 context.Countries.Where(x => x.Name == "South Africa").First(); as context.Countries.Single(x => x.Name == "南非");
-
您在 SaveChanges() 上遇到什么错误?此外,您可以使用 context.Countries.Local.Where(... 查询您的本地实体
-
@UrbanEsc,我得到“一个或多个实体的验证失败。有关更多详细信息,请参阅 'EntityValidationErrors' 属性。”...在更深入的调查中,这使我找到了 MaxLenth(2)应该是 MaxLength(3)。谢谢。
标签: c# entity-framework-6