Frage

Ich habe eine Tabelle in einer SQL Server 2008 Datenbank umbenannt, von eL_CourseStepUserNotes zu StepUserNotes. Ich benannte die Tabelle, die die SSMA verwendet wird.

Die Tabelle wird in einem ASP.NET 4.0 app verwendet. Ich verwende LINQ to SQL für alle CRUD. Das Problem ist, dass der folgende Code:

    dbDataContext db = new dbDataContext();
    var k = (from c in db.StepUserNotes
             where ((c.CourseStepFK == q.CourseStepFK) && (c.UserFK == q.UserFK))
             select c).FirstOrDefault();
    try
    {
        db.StepUserNotes.InsertOnSubmit(q);
        db.SubmitChanges();
    }
    catch
    {

    }

Fehler auf der db.SubmitChanges Linie und sagen:

SqlException was caught. Invalid object name 'eL_CourseStepUserNotes'.

Das heißt, der alte Name für die Tabelle mich zu verfolgen hat wieder kommen.

Ich habe die alte LINQ to SQL dbml Datei gelöscht und eine neue erstellt. Ich habe für Strings durch alle Quellcode gesucht, die den alten Tabellennamen enthalten. Nichts. Der Code compiliert ...

Wo kann ich sonst noch aus?

Der Fehler kommt zurück von SQL Server, und mit dem Dienstprogramm zur Auflistung aller Fremdschlüssel in einer SQL Server-Datenbank in Frage SO gezeigt: sql: Notwendigkeit zu ändern Einschränkung auf Umbenennungstabelle

zeigt keine Zeichen der alten Tabellennamen in FKs auch nicht.

Ich bin bei einem vollständigen Verlust, wo zu suchen oder was als nächstes zu versuchen. Irgendwelche Vorschläge?

War es hilfreich?

Lösung

Antwort:

Das Problem, wie von Stu und Stark angegeben war ein Auslöser. Stu hat mir die SQL zu laufen, dass das Problem genagelt. Es ist dokumentiert hier falls jemand anders läuft in diesen:

Select Object_Name(ID) From SysComments 
       Where Text Like '%el_CourseStepUserNotes%'

Dies ergab einen Trigger mit folgendem Namen:

tr_eL_CourseStepUserNotes

Der Auslöser die alten Namen verwiesen wird, wie folgt:

SET DateAmended = CURRENT_TIMESTAMP
     FROM eL_CourseStepUserNotes PP  
            INNER JOIN inserted i  ON PP.UserNoteId = i.UserNoteId

Alles funktioniert jetzt wieder.

Dumme mir, ich erkannt haben sollte, dass ein Auslöser das Problem als erste Fehler war, wurde ich zum DateAmended Feld verwandt war.

Ich habe keine Ahnung, warum ein Trigger aktualisieren würde, wenn ein Tabellenname geändert. Ich hatte alle Schlüssel und Beziehungen geprüft, aber vergessen, diesen Trigger.

leben und lernen.

Andere Tipps

Wenn Sie LINQ to SQL-Datei neu erstellt, erinnerte sich der Server-Browser aktualisieren zuerst den Tabellennamen Änderung widerzuspiegeln?

Bearbeiten -. Ich meine den Visual Studio Server-Browser

Sie müssen Ihre LINQ to SQL-Klasse erneut zu binden, alle Tische fallen, so dass sie dann wieder hinzufügen, aus dem Server-Explorer

  1. öffnen Sie das Projekt in Visual Studio.
  2. Öffnen Sie dbml Datei.
  3. finden Sie die Tabelle Sie gerade umbenannt haben.
  4. auswählen und löschen.
  5. Speichern.
  6. Öffnen Server Explorer.
  7. Verbinden Sie Ihre Datenbank.
  8. Finden Sie die Tabelle, die Sie umbenannt haben.
  9. Drag & Drop auf den Designer Ihrer dbml Datei.
  10. Speichern Sie die Datei erneut.
  11. Compile Ihr Projekt.

Es ist nicht notwendig, die Tabellen aus DBML Datei zu löschen. Sie können einfach den Designer öffnen, klicken Sie auf das Klassendiagramm Ihrer Tabelle darstellt und den neuen Namen der Tabelle eingeben.

Wenn Sie jedoch ist Erschaffungs von Grunde ist es wichtig, im Server-Explorer aktualisieren sonst wird es noch die alten Namen aus dem Schema ziehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top