1

尝试生成基于代码的实体和映射时,我的模型出现以下错误。这是错误:

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  

我认为我的模型中没有它所期望的东西。我该如何解决这个问题?

4

1 回答 1

1

发生错误是因为模板中的 LINQ 查询使用 .Single() ,当查询没有返回结果时会引发异常。如果将 .Single() 切换为 .SingleOrDefault() 它不会抛出异常。

该模板包含对 .Single() 的多次调用,但通过反复试验,我发现罪魁祸首 .Single()(在我的例子中)位于第 124 行:

NavigationProperty navPropertyBackReference = navProperty.ToEndMember.GetEntityType().NavigationProperties
    .Where(npBack => npBack.RelationshipType == navProperty.RelationshipType && npBack != navProperty)
    .SingleOrDefault();

你的罪魁祸首 .Single() 可能不同。我根本不懂这种模板语言,所以不知道让代码继续空序列会有什么后果。它可能只会导致您的输出丢失一些您必须手动修复的数据,但至少这样不会发生异常并且您会获得所有文件。

您可以将所有 .Single() 替换为 .SingleOrDefault() 而不会发生意外,但为了安全起见,我只替换了导致异常的那个。

于 2013-02-15T22:14:40.890 回答