Wie Sie verhindern, dass EF Validierung von Eigenschaften, die nicht zugeordnet werden während der DBContext.SaveChanges()

Habe ich ein Benutzer-Modell mit zwei [NotMapped] string-Eigenschaften-Kennwort und ConfirmPassword. Diese sind unsichtbar, weil ich Kennwort speichern als byte-array (die nach dem Salzen), so gibt es zwei zusätzliche Eigenschaften (abgebildet) InternalPassword und Salz im Benutzer-Modell.

Das problem ist, wenn ich das user-Modell-Passwort zu ändern, entity framework wirft DBEntityValidation Fehlermeldung "Das Kennwort ist erforderlich." Was ich verstehe ist hier, dass die EF wird versuchen, zu validieren, das Modell vor dem speichern und da Passwort/ConfirmPassword sind nicht festgelegt, es wirft diese Fehlermeldung. Dies wirft folgende Fragen auf:

1) Wenn das Eigentum Passwort ist explizit annitated als [NotMapped], warum ist EF-es überprüft beim speichern?
2) WENN EF führt eine Validierung beim speichern, und das gleiche wird auch durchgeführt, während die Bindung (I. E. in der controller-action-Methode), tut es nicht weh performance? (die Validierung zweimal)
3) Was ist der empfohlene Weg, um diesen Fehler zu beheben? (Wenn ich explizit festlegen, Password-Eigenschaft, um dummy-Wert, Fehler ist Weg.)

Edit: ich habe entfernt den code, da ist es langwierig und kann die Ursache keine Antwort noch. Wenn jemand will, um einen Blick zu haben, kann ich anfügen, unten.

  • Das ist komisch, denn auch wenn die Password Eigenschaft zugeordnet wird, wäre es nicht erforderlich, die standardmäßig seit string Eigenschaften sind nicht erforderlich, es sei denn, Sie geben diese explizit - putting [Required] - Attribut für die Eigenschaft oder das aufrufen von IsRequired() im Fluent-API. Haben Sie beispielsweise die Einstellungen für die Password Eigenschaft?
  • ja, ich habe required-Attribut angegebene Passwort. Dies ist nötig, um den Benutzer fragt, füllen Sie das Passwort-Feld bei der Registrierung. Aber da dieses nicht belegt, warum die EF zu überprüfen versucht, es während dem speichern?
InformationsquelleAutor Varun K | 2011-08-13
Schreibe einen Kommentar