2016-06-20 12 views
-1

Ich bin mit einem Problem mit Entityframework konfrontiert. Es gibt keine rekursive Schleife in der Abfrage, aber ich weiß nicht, warum ich mit dieser Ausnahme konfrontiert bin. Sie können den Code sehen.System.StackOverflowException 'aufgetreten in EntityFramework.dll

var checkList = from checklist in db.Checklists 
         join code in db.Codes on checklist.iCodeID equals code.iCodeID 
         where code.bDeleted == false && code.bObsolete == false 
         join codeGroup in db.CodeGroups on code.iGroupID equals codeGroup.iGroupID 
         where codeGroup.bDeleted == false && codeGroup.bInspection == true 
         join codeInspectionType in db.CodeInspectionTypeVs on checklist.LongKey.Substring(0, 6) equals DbFunctions.Right("00000" + codeInspectionType.InspectionTypeID, 6) 
         where checklist.bDeleted == false 
         orderby checklist.iChecklistID 
         select new 
         { 
          checklist.iChecklistID, 
          InspectionTypeID = checklist.LongKey.Substring(0, 6).ToString(), 
          codeInspectionType.bSubInspection, 
          SortSeq = db.CodesTreeSelectUDF(null, checklist.LongKey, null, null, null).Select(x => x.SortKey).FirstOrDefault(), 
          codeGroup.iGroupID, 
          codeGroup.GroupDesc, 
          checklist.bPromptForQty, 
          checklist.bShowInTree, 
          DescCombo = new { codeGroup.DescCombo1, codeGroup.DescCombo2, codeGroup.DescCombo3, codeGroup.DescCombo4, codeGroup.DescCombo5, codeGroup.DescCombo6, codeGroup.DescCombo7, codeGroup.DescCombo8, codeGroup.DescCombo9, codeGroup.DescCombo10, codeGroup.DescCombo11, codeGroup.DescCombo12, codeGroup.DescCombo13, codeGroup.DescCombo14, codeGroup.DescCombo15, codeGroup.DescCombo16, codeGroup.DescCombo17, codeGroup.DescCombo18, codeGroup.DescCombo19, codeGroup.DescCombo20, codeGroup.DescCombo21, codeGroup.DescCombo22, codeGroup.DescCombo23, codeGroup.DescCombo24, codeGroup.DescCombo25, codeGroup.DescCombo26, codeGroup.DescCombo27, codeGroup.DescCombo28, codeGroup.DescCombo29, codeGroup.DescCombo30 }, 
          codeGroup.DescText1, 
          codeGroup.bTextAbbreviation1, 
          codeGroup.DescText2, 
          codeGroup.bTextAbbreviation2, 
          codeGroup.DescText3, 
          codeGroup.bTextAbbreviation3, 
          codeGroup.DescText4, 
          codeGroup.bTextAbbreviation4, 
          codeGroup.DescText5, 
          codeGroup.bTextAbbreviation5, 
          codeGroup.DescText6, 
          codeGroup.bTextAbbreviation6, 
          codeGroup.DescText7, 
          codeGroup.bTextAbbreviation7, 
          codeGroup.DescText8, 
          codeGroup.bTextAbbreviation8, 
          codeGroup.DescText9, 
          codeGroup.bTextAbbreviation9, 
          codeGroup.DescText10, 
          codeGroup.bTextAbbreviation10, 
          codeGroup.DescInt1, 
          codeGroup.DescInt2, 
          codeGroup.DescInt3, 
          codeGroup.DescInt4, 
          codeGroup.DescInt5, 
          codeGroup.DescInt6, 
          codeGroup.DescInt7, 
          codeGroup.DescInt8, 
          codeGroup.DescInt9, 
          codeGroup.DescInt10, 
          codeGroup.DescNum1, 
          codeGroup.DescNum2, 
          codeGroup.DescNum3, 
          codeGroup.DescNum4, 
          codeGroup.DescNum5, 
          codeGroup.DescNum6, 
          codeGroup.DescNum7, 
          codeGroup.DescNum8, 
          codeGroup.DescNum9, 
          codeGroup.DescNum10, 
          codeGroup.DescBool1, 
          codeGroup.BoolOnText1, 
          codeGroup.BoolOffText1, 
          codeGroup.DescBool2, 
          codeGroup.BoolOnText2, 
          codeGroup.BoolOffText2, 
          codeGroup.DescBool3, 
          codeGroup.BoolOnText3, 
          codeGroup.BoolOffText3, 
          codeGroup.DescBool4, 
          codeGroup.BoolOnText4, 
          codeGroup.BoolOffText4, 
          codeGroup.DescBool5, 
          codeGroup.BoolOnText5, 
          codeGroup.BoolOffText5, 
          codeGroup.DescBool6, 
          codeGroup.BoolOnText6, 
          codeGroup.BoolOffText6, 
          codeGroup.DescBool7, 
          codeGroup.BoolOnText7, 
          codeGroup.BoolOffText7, 
          codeGroup.DescBool8, 
          codeGroup.BoolOnText8, 
          codeGroup.BoolOffText8, 
          codeGroup.DescBool9, 
          codeGroup.BoolOnText9, 
          codeGroup.BoolOffText9, 
          codeGroup.DescBool10, 
          codeGroup.BoolOnText10, 
          codeGroup.BoolOffText10, 
          codeGroup.DescBool11, 
          codeGroup.BoolOnText11, 
          codeGroup.BoolOffText11, 
          codeGroup.DescBool12, 
          codeGroup.BoolOnText12, 
          codeGroup.BoolOffText12, 
          codeGroup.DescBool13, 
          codeGroup.BoolOnText13, 
          codeGroup.BoolOffText13, 
          codeGroup.DescBool14, 
          codeGroup.BoolOnText14, 
          codeGroup.BoolOffText14, 
          codeGroup.DescBool15, 
          codeGroup.BoolOnText15, 
          codeGroup.BoolOffText15, 
          codeGroup.DescBool16, 
          codeGroup.BoolOnText16, 
          codeGroup.BoolOffText16, 
          codeGroup.DescBool17, 
          codeGroup.BoolOnText17, 
          codeGroup.BoolOffText17, 
          codeGroup.DescBool18, 
          codeGroup.BoolOnText18, 
          codeGroup.BoolOffText18, 
          codeGroup.DescBool19, 
          codeGroup.BoolOnText19, 
          codeGroup.BoolOffText19, 
          codeGroup.DescBool20, 
          codeGroup.BoolOnText20, 
          codeGroup.BoolOffText20, 
          codeGroup.DescBool21, 
          codeGroup.BoolOnText21, 
          codeGroup.BoolOffText21, 
          codeGroup.DescBool22, 
          codeGroup.BoolOnText22, 
          codeGroup.BoolOffText22, 
          codeGroup.DescBool23, 
          codeGroup.BoolOnText23, 
          codeGroup.BoolOffText23, 
          codeGroup.DescBool24, 
          codeGroup.BoolOnText24, 
          codeGroup.BoolOffText24, 
          codeGroup.DescBool25, 
          codeGroup.BoolOnText25, 
          codeGroup.BoolOffText25, 
          codeGroup.DescBool26, 
          codeGroup.BoolOnText26, 
          codeGroup.BoolOffText26, 
          codeGroup.DescBool27, 
          codeGroup.BoolOnText27, 
          codeGroup.BoolOffText27, 
          codeGroup.DescBool28, 
          codeGroup.BoolOnText28, 
          codeGroup.BoolOffText28, 
          codeGroup.DescBool29, 
          codeGroup.BoolOnText29, 
          codeGroup.BoolOffText29, 
          codeGroup.DescBool30, 
          codeGroup.BoolOnText30, 
          codeGroup.BoolOffText30, 
          DescMoney = new { codeGroup.DescMoney1, codeGroup.DescMoney2, codeGroup.DescMoney3, codeGroup.DescMoney4, codeGroup.DescMoney5, codeGroup.DescMoney6, codeGroup.DescMoney7, codeGroup.DescMoney8, codeGroup.DescMoney9, codeGroup.DescMoney10 }, 
          DescDate = new { codeGroup.DescDate1, codeGroup.DescDate2, codeGroup.DescDate3, codeGroup.DescDate4, codeGroup.DescDate5, codeGroup.DescDate6, codeGroup.DescDate7, codeGroup.DescDate8, codeGroup.DescDate9, codeGroup.DescDate10 }, 
          DescMemo = new { codeGroup.DescMemo1, codeGroup.DescMemo2, codeGroup.DescMemo3, codeGroup.DescMemo4, codeGroup.DescMemo5, codeGroup.DescMemo6, codeGroup.DescMemo7, codeGroup.DescMemo8, codeGroup.DescMemo9, codeGroup.DescMemo10 }, 
          codeGroup.Bookmark, 
          codeGroup.bProtected, 
          codeGroup.bMultiPicklist, 
          codeGroup.Notes, 
          code.iCodeID, 
          LongKey = db.CodesTreeSelectUDF(null, checklist.LongKey, null, null, null).Select(x => x.LongKey).FirstOrDefault(), 
          code.CodeSortCode, 
          code.Description, 
          code.bDefault, 
          CodeCombo = new 
          { 
           code.CodeCombo1, 
           code.CodeCombo2, 
           code.CodeCombo3, 
           code.CodeCombo4, 
           code.CodeCombo5, 
           code.CodeCombo6, 
           code.CodeCombo7, 
           code.CodeCombo8, 
           code.CodeCombo9, 
           code.CodeCombo10, 
           code.CodeCombo11, 
           code.CodeCombo12, 
           code.CodeCombo13, 
           code.CodeCombo14, 
           code.CodeCombo15, 
           code.CodeCombo16, 
           code.CodeCombo17, 
           code.CodeCombo18, 
           code.CodeCombo19, 
           code.CodeCombo20, 
           code.CodeCombo21, 
           code.CodeCombo22, 
           code.CodeCombo23, 
           code.CodeCombo24, 
           code.CodeCombo25, 
           code.CodeCombo26, 
           code.CodeCombo27, 
           code.CodeCombo28, 
           code.CodeCombo29, 
           code.CodeCombo30 
          }, 
          code.CodeText1, 
          code.CodeTextAbbreviation1, 
          code.CodeText2, 
          code.CodeTextAbbreviation2, 
          code.CodeText3, 
          code.CodeTextAbbreviation3, 
          code.CodeText4, 
          code.CodeTextAbbreviation4, 
          code.CodeText5, 
          code.CodeTextAbbreviation5, 
          code.CodeText6, 
          code.CodeTextAbbreviation6, 
          code.CodeText7, 
          code.CodeTextAbbreviation7, 
          code.CodeText8, 
          code.CodeTextAbbreviation8, 
          code.CodeText9, 
          code.CodeTextAbbreviation9, 
          code.CodeText10, 
          code.CodeTextAbbreviation10, 
          CodeInt = new { code.CodeInt1, code.CodeInt2, code.CodeInt3, code.CodeInt4, code.CodeInt5, code.CodeInt6, code.CodeInt7, code.CodeInt8, code.CodeInt9, code.CodeInt10 }, 
          CodeNum = new { code.CodeNum1, code.CodeNum2, code.CodeNum3, code.CodeNum4, code.CodeNum5, code.CodeNum6, code.CodeNum7, code.CodeNum8, code.CodeNum9, code.CodeNum10 }, 
          CodeBool = new 
          { 
           code.CodeBool1, 
           code.CodeBool2, 
           code.CodeBool3, 
           code.CodeBool4, 
           code.CodeBool5, 
           code.CodeBool6, 
           code.CodeBool7, 
           code.CodeBool8, 
           code.CodeBool9, 
           code.CodeBool10, 
           code.CodeBool11, 
           code.CodeBool12, 
           code.CodeBool13, 
           code.CodeBool14, 
           code.CodeBool15, 
           code.CodeBool16, 
           code.CodeBool17, 
           code.CodeBool18, 
           code.CodeBool19, 
           code.CodeBool20, 
           code.CodeBool21, 
           code.CodeBool22, 
           code.CodeBool23, 
           code.CodeBool24, 
           code.CodeBool25, 
           code.CodeBool26, 
           code.CodeBool27, 
           code.CodeBool28, 
           code.CodeBool29, 
           code.CodeBool30 
          }, 
          CodeMoney = new { code.CodeMoney1, code.CodeMoney2, code.CodeMoney3, code.CodeMoney4, code.CodeMoney5, code.CodeMoney6, code.CodeMoney7, code.CodeMoney8, code.CodeMoney9, code.CodeMoney10 }, 
          CodeDate = new { code.CodeDate1, code.CodeDate2, code.CodeDate3, code.CodeDate4, code.CodeDate5, code.CodeDate6, code.CodeDate7, code.CodeDate8, code.CodeDate9, code.CodeDate10 }, 
          CodeMemo = new { code.CodeMemo1, code.CodeMemo2, code.CodeMemo3, code.CodeMemo4, code.CodeMemo5, code.CodeMemo6, code.CodeMemo7, code.CodeMemo8, code.CodeMemo9, code.CodeMemo10 }, 
          code.CodeURL, 
          code.SessionVariable, 
          code.bMandatory, 
          code.PopUp, 
          code.bDrillDown, 
          code.Icon 
         }; 

Wenn ich dies über Postbote testen wirft es die folgende Ausnahme:

An unhandled exception of type 'System.StackOverflowException' occurred in EntityFramework.dll 

Ich habe darüber gesucht, aber mein Fall ist anders, wenn ich die select vales überspringen meine Abfrage normal arbeiten. Keine Ahnung warum. aber ohne zu überspringen, wird Ausnahme ausgelöst.

Bitte helfen ..

+0

Sorry für das Sagen, aber diese Abfrage ist verrückt. Sie sollten Ihr Datenmodell normalisieren, bevor Sie noch einen Schritt weiter gehen. Erstellen Sie anschließend die verschiedenen Teile der Benutzeroberfläche in separaten Schritten. Warum alles in einem unhaltbaren Monolith? –

+0

Abgesehen davon sind 'StackOverflowExceptions' schwer zu erkennen, ohne dass der Code ausgeführt werden kann (und selbst dann). Aber ich bin mir ziemlich sicher, dass LINQ-to-SQL den SQL-Code, den es zu generieren versucht, erstickt. –

+0

@Gert Arnold Was ist, wenn dies die Anforderungen des Kunden sind. Ich weiß, das ist verrückt, aber wie könnte ich dafür tun. – user3253756

Antwort

0

Nach viel Kampf finde ich Antwort von mir.

db.ConvertLongKeyUDF (LongKey) replace with 
db.ConvertLongKeyUDF (LongKey) As ConvertedtLongKey 


CodeGroup.Notes replace with 
CodeGroup.Notes As codeGroupNotes 


CodeGroup.bProtected replace with 
CodeGroup.bProtected As codeGroup_bProtected 


code.Notes replace with 
codes.Notes As codeNotes 


code.bProtected replace with 
codes.bProtected As code_bProtected 

Da diese Zeilen die gleichen Namenfelder erzeugen, die ERROR erzeugen!

Verwandte Themen