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 に答える