Ich habe ein erstes EF5-Code-Projekt, das das Attribut [DatabaseGenerated (DatabaseGeneratedOption.Computed)] verwendet. Diese Option überschreibt meine Einstellungen.Entity Framework 5: Verwenden von DatabaseGeneratedOption.Computed Option
Betrachten Sie diese SQL-Tabelle:
CREATE TABLE Vehicle (
VehicleId int identity(1,1) not null,
Name varchar(100) not null default ('Not Set')
)
ich die SQL-Standard-Konstrukt bin mit der [Name] ist zu setzen, falls es nicht gesetzt.
In Code hinter, ich habe eine Klasse ähnlich definiert:
public class Vehicle {
...
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public string ShoulderYN { get; set; }
}
Wenn ich die Einheit in Code aktualisieren, stellen Sie den Wert in der Standardeinstellung überschreibt meine neue Einstellung.
In Code, habe ich (pseudo):
vehicle.Name = 'Update Name of Vehicle';
_dbContext.Update(vehicle);
_dbContext.SaveChanges();
Das erwartete Ergebnis ist Vehicle.Name = 'Update Name des Fahrzeugs'.
Das tatsächliche Ergebnis ist Vehicle.Name = 'Nicht festgelegt'.
Gibt es eine Möglichkeit in EF5 zu sagen: "Wenn Vehicle.Name null/leer ist, verwende den in der Datenbank definierten Wert? Anderenfalls, wenn ich den Wert im Code festlege, möchte ich diesen Wert verwenden."
Danke.
Steve
Warum wird dieses Verhalten nicht standardmäßig bereitgestellt? Was ist der Vorteil dahinter? Zum Beispiel bestimme ich das Standarddatum (notnull) in einer Spalte der Tabelle in DB. Aber EF senden eine min Datetime wenn kein Wert per Code gesendet wird. Ich kann wirklich keine Logik darin finden. –