2017-06-09 1 views
0

Ich modifiziere ein vorhandenes Projekt, um linq zu SQL als Test zu verwenden. Ich verwende linq, um gespeicherte Prozeduren aufzurufen.linq to sql C# gleicher Name für Entität und aspx Seite

Ich hatte ein paar Probleme, Dinge zur Arbeit zu bringen. Es funktionierte einfach nicht wie die Beispiele, die ich gesehen habe und die kleinen Experimente, die ich vorher gemacht hatte - und dann fiel es mir auf. Ich denke, ich weiß, was das Problem ist, aber ich bin mir nicht sicher, wie ich es beheben soll.

So, hier ist der Code: "NOPE"

 using (TEMPDataContext dbc = new TEMPDataContext(connectionString)) 
     { 
      List<TEMPquest> qlist = new List<TEMPquest>(); 
      qlist = (List<TEMPquest>)dbc.GetTEMPQuestByID(id); 
      if (qlist.Count == 0) 
      { 
       if (debug_level > 1) … 
      } 
      else if (qlist.Count > 1) 
      { 
       if (debug_level > 1) … 
      } 
      else 
      { 
       // There is exactly one row of data, so use it to populate the controls on the aspx side 

       TEMPquest tq = (TEMPquest) qlist[0]; 
       int id = tq.uid //<=== NOPE! 
      } 

Das Kommentarzeile mit dem großen darauf verursacht das Problem. Es stellt sich heraus, dass die Seite, die dieser Code unterstützt, TEMPquest.aspx heißt. Wenn ich also die Variablen qlist und tq deklariere, wird die Seite und nicht die Entität verwendet! Alle Eigenschaften dieser Variablen sind Eigenschaften der Seite, nicht die Entität!

Ich könnte das beheben, indem ich entweder den Seitennamen oder den Namen der Tabelle/Entity ändere, aber ich würde es vorziehen, nicht so unauffällig für die Arbeit meines Chefs wie möglich zu sein. Gibt es eine Möglichkeit, programmatisch auf die OTHER TEMPquest - die Entität - anstatt auf die Seite zu verweisen?

Ich dachte dbc.TEMPquest, aber das ist es nicht. Gibt es eine Möglichkeit, dies zu tun, außer die Seite oder die Tabelle/Entität umzubenennen? (Nichts ist knifflig, bitte. Wenn es nicht einfach ist, dann werde ich Sachen umbenennen.)

+0

Warum stört Sie noch fragen? Umbenennen der Seite würde wahrscheinlich alle 2 Sekunden dauern. – mason

Antwort

0

Deklarieren Sie die Variable mit vollem Namespace.

var qlist = new List<My.Namespace.ToEntity.TEMPquest>(); 
qlist = (List<My.Namespace.ToEntity.TEMPquest>)dbc.GetTEMPQuestByID(id); 

und

var tq = (My.Namespace.ToEntity.TEMPquest) qlist[0]; 
+0

Ich werde es momentan versuchen – elbillaf

+0

"Mein" wird nicht erkannt. Versuchte es mit nur Namespace, wie in der neuen Liste , aber kein Glück. Es erkennt ToEntity oder ToEntity() nicht. – elbillaf

+0

"My.Namespace.ToEntity." ist nur ein Platzhalter für Ihren Namespace. Ersetzen Sie alles durch Ihren Namensraum –