Mam pierwszy projekt kodu EF5, który używa atrybutu [DatabaseGenerated (DatabaseGeneratedOption.Computed)]. Ta opcja przesłania moje ustawienia.Entity Framework 5: Using DatabaseGeneratedOption.Computed opcja
Rozważmy tę tabelę SQL:
CREATE TABLE Vehicle (
VehicleId int identity(1,1) not null,
Name varchar(100) not null default ('Not Set')
)
używam domyślnego SQL konstrukt ustawienie [Nazwa] to sprawa nie jest ustawiony.
W kodzie tyłu, Mam klasy zdefiniowane podobne do:
public class Vehicle {
...
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public string ShoulderYN { get; set; }
}
Kiedy zaktualizować podmiot w kodzie, wartość ustawiona w domyślnej zastępuje moje nowe ustawienie.
W kodzie mam (pseudo):
vehicle.Name = 'Update Name of Vehicle';
_dbContext.Update(vehicle);
_dbContext.SaveChanges();
Oczekiwany wynik to Vehicle.Name = 'Aktualizacja Nazwa pojazdu.
Rzeczywistym wynikiem jest Vehicle.Name = "Not Set".
Czy istnieje sposób w EF5, aby powiedzieć "jeśli nazwa pojazdu jest pusta/pusty, użyj wartości zdefiniowanej w bazie danych? W przeciwnym razie, jeśli ustawię wartość w kodzie, chcę użyć tej wartości."
Dzięki.
Steve
Dlaczego to zachowanie nie jest dostarczane domyślnie? Jakie są tego korzyści? Na przykład ustalam domyślną datę (notnull) w kolumnie tabeli w DB. Ale EF wysyła min-datetime, jeśli żadna wartość nie jest wysyłana przez kod. Naprawdę nie mogę znaleźć w tym żadnej logiki. –