Je suis à l'aide d'ASP.NET Standard MVC (pas de Base) modèle dans mon projet, qui utilise EF6 comme ORM. Base de données SQL Server Express.
Voici mon entité de l'objet (en ignorant non liées à des propriétés):
public class Asset : AggregateRoot<long>
{
[DataType(DataType.DateTime)]
public DateTime? LastControlTime { get; set; }
}
Lorsque je crée un nouvel Actif, ce champ de manière appropriée créé comme NULL. Donc, tout fonctionne comme destiné au premier abord. Mais quand j'essaie de mettre à jour un objet avec un simple appel de service, il vis.
Voici la méthode dans l'application de service de classe:
public void ResetLastControlTime (EntityDto<long> input)
{
var asset = Repository.Get(input.Id);
asset.LastControlTime = default(DateTime?);
}
Cela devrait réinitialiser le champ à la valeur null. J'ai aussi essayé asset.LastControlTime = null;
. Mais à la fin il est écrit "0001-01-01 00:00:00.0000000" pour ce champ dans la base de données. J'ai beaucoup d'endroits dans le code que je maîtrise pour une valeur null alors maintenant, j'ai dû changer de tonnes de vieux fichiers ou je doit trouver un moyen de réinitialiser le champ de simplement NULLE.
J'ai vérifié les mêmes questions ici, mais impossible de trouver une réponse. Tous d'entre eux raconte nullable DateTime, dont j'ai déjà. Dans SQL server schéma de la table, Type de Données est datetime2(7)
, donc je suppose que c'est correct aussi. Oh et en supprimant le Type de données d'annotation n'ai pas changer quoi que ce soit.
Donc ce qui me manque ici? Que dois-je vérifier pour trouver le problème?