在尝试生成基于代码的实体和映射时,我的模型上出现以下错误。这是错误:
Error 1 Running transformation: System.InvalidOperationException: Sequence contains no elements
at System.Linq.Enumerable.Single[TSource](IEnumerable`1 source)
at Microsoft.VisualStudio.TextTemplating5FBD4EDD9EACD746112871E64F81C5D3.GeneratedTextTransformation.TransformText()
at Microsoft.VisualStudio.TextTemplating.TransformationRunner.RunTransformation(TemplateProcessingSession session, String source, ITextTemplatingEngineHost host, String& result)
1 1
我认为我的模型中没有预期的东西。我该如何解决这个问题?
答案 0 :(得分:1)
发生错误是因为模板中的LINQ查询使用.Single(),当查询没有返回结果时会抛出异常。如果将.Single()切换为.SingleOrDefault(),则不会抛出异常。
该模板包含对.Single()的多次调用,但通过反复试验,我发现罪魁祸首.Single()(在我的情况下)位于第124行:
NavigationProperty navPropertyBackReference = navProperty.ToEndMember.GetEntityType().NavigationProperties
.Where(npBack => npBack.RelationshipType == navProperty.RelationshipType && npBack != navProperty)
.SingleOrDefault();
你的罪魁祸首.Single()可能会有所不同。我根本不理解这种模板语言,所以我不知道允许代码继续使用空序列的后果是什么。它可能只会导致您的输出丢失一些您必须手动修复的数据,但至少这种方式不会发生异常并且您获得了所有文件。
你可以用.SingleOrDefault()替换所有.Single()s而不会发生意外,但为了安全起见,我只替换了导致我异常的那个。