Ich verwende zunächst EF 4 Database + POCOs. Da EF keine einfache Möglichkeit hat, anzugeben, dass eingehende DateTimes vom Typ UTC sind, habe ich die Eigenschaft aus der automatisch generierten Datei in eine Teilklasse in einer anderen Datei verschoben.
private DateTime _createdOn;
public virtual System.DateTime CreatedOn
{
get { return _createdOn; }
set
{
_createdOn =
(value.Kind == DateTimeKind.Unspecified)
? _createdOn = DateTime.SpecifyKind(value, DateTimeKind.Utc)
: value;
}
}
Jetzt werden jedoch jedes Mal, wenn ich das Modell aktualisiere, die automatischen Eigenschaften in der T4-Generation neu erstellt. Dies führt natürlich zu dem folgenden Kompilierungsfehler: "Der Typ 'Foo' enthält bereits eine Definition für 'CreatedOn'".
Gibt es eine Möglichkeit, EF anzuweisen, diese Eigenschaft nicht zu erzeugen und mich selbst damit umgehen zu lassen?
Update
Danke für alle Antworten...
Ich habe eine neue benutzerdefinierte Eigenschaft mit einem anderen Namen erstellt.
public virtual System.DateTime CreatedOnUtc
{
get
{
return (CreatedOn.Kind==DateTimeKind.Unspecified)
? DateTime.SpecifyKind(CreatedOn, DateTimeKind.Utc)
: CreatedOn;
}
set
{
CreatedOn =
(value.Kind == DateTimeKind.Unspecified)
? CreatedOn = DateTime.SpecifyKind(value, DateTimeKind.Utc)
: value;
}
}
Ich habe auch alle Setter und Getter der automatisch generierten Eigenschaft auf Private gesetzt, mit Ausnahme der Eigenschaften, die ich in einer Linq-to-Entities-Abfrage verwenden musste (seufz). In diesen Fällen habe ich die Getter auf intern gesetzt.
Ich wünschte, es gäbe ein Dropdown-Menü für DateTime-Typen, um festzulegen, als welche Art von DateTime EF sie behandeln soll. Das würde Stunden und die zusätzliche Komplikation gespeichert haben.