Ich bin neu bei LINQ und ich mag es bisher, aber ich versuche, in einigen Formen laden, indem Sie einen einzigen Datensatz (Student). Wenn diese nicht vorhanden ist want't I Standardwerte d leere Strings falsch bools ...LINQ einzelnen Formularen oder Standardeinstellungen, wenn kein Datensatz
so verwendet I:
db = new DataClassesDataContext();
student = db.ss_students.SingleOrDefault(p => p.student_id == studentID);
txtRegNumber.EditValue = student.car_reg_no;
Diese auf die Zuweisung von student.car_reg_no fehlgeschlagen. Mir wurde klar, dass ich die SingleOrDefault-Methode scheinbar falsch verstanden habe, und sie gibt für den Schüler null zurück, wenn er keinen Datensatz finden kann. Ich dachte aus irgendeinem Grund, dass es die Standardwerte für jedes der Felder wie student.car_reg_no zurückgeben würde. Ich denke, ich denke immer noch im Datenbankmodus.
Dies ist kein Problem, das ich Code wie folgt tun:
db = new DataClassesDataContext();
student = db.ss_students.SingleOrDefault(p => p.student_id == studentID);
if (student != null)
{
txtRegNumber.Text = student.car_reg_no;
//assign more control values
}
Und die Standardwerte könnten entweder auf die Steuerelemente auf dem Formular in einem anderen oder zugewiesen direkt zugeordnet werden.
Aber ist das der richtige Weg, oder fehlt mir etwas?
BEARBEITEN Danke für die Beiträge bis jetzt habe ich den Ansatz von Marc Gravell vorgeschlagen. Ich bin jetzt ein bisschen weitergekommen.
Ich versuche jetzt, die Daten zurück in die Datenbank zu speichern, woher würde ich wissen, wenn ich einen Datensatz aktualisiere oder einfüge. Sollte ich Bools hinzufügen, um das selbst aufzunehmen oder ist es ein eingebauter Weg?
'FirstOrDefault' wäre * etwas * billiger, wenn die IDs niemals dupliziert werden können. 'SingleOrDefault' überprüft dies jedes Mal. (Dies ist kein Problem mit Ihrer Antwort, es ist ein Kommentar für den Fall, dass das OP eine unnötige Validierung in der Antwort angefordert hat.) –
Danke, es auf diese Weise zu tun, haben gerade eine Bearbeitung hinzugefügt, um es im selben Beitrag für andere zu halten. Was passiert, wenn ich die Daten speichern will, muss ich nicht wissen, ob es (in SQL-Begriffen) ein Einfüge- oder ein Aktualisierungsbefehl ist. – PeteT
Da dies LINQ-to-SQL ist, ist der schlimmste Fall, dass es zwei Zeilen aus der Datenbank lesen muss, bevor die Ausnahme ausgelöst wird ... –