2012-08-14 62 views
1

當我嘗試生成基於代碼的實體和映射時,我在模型上收到以下錯誤。這裏是錯誤:運行EF 4.x DbContext Fluent生成器時出錯

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

鮑勃:你有沒有想過這個問題? – 2013-02-15 21:56:42

+0

對模板進行了一些黑客攻擊,併爲我自己修復了它,YMMV。 – 2013-02-15 22:15:34

回答

1

發生錯誤是因爲模板中的LINQ查詢使用.Single(),當查詢返回無結果時會引發異常。如果將.Single()切換爲.SingleOrDefault(),則不會拋出異常。

模板包含。單()多次調用,而是通過試錯,我發現罪魁禍首。單()(對我來說)是在線124:

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

你罪魁禍首.Single()可能會有所不同。我完全不理解這種模板語言,所以我不知道允許代碼繼續執行一個空序列的後果。它可能只會導致你的輸出缺少一些你必須手動修復的數據,但至少在這種情況下,這種異常不會發生,並且你得到了所有的文件。

可能您可以用.SingleOrDefault()替換所有.Single()s,但爲了安全起見,我只替換了導致我的異常的那個。