Comment dire à l'entité Framework comment enregistrer les instances d'un type personnalisé (qui peut être stocké sous forme de scalaire)

StackOverflow https://stackoverflow.com/questions/9451000

  •  13-11-2019
  •  | 
  •  

Question

L'une de mes cours d'entité serait possible de stocker dans une base de données SQL Server en tant que Bigint. Ma question est: comment puis-je obtenir un contexte de cadre d'entité pour savoir comment stocker et récupérer les instances de ma classe d'entité?

Plus de détails. j'utilise Temps de Noda, qui peut représenter une gamme (beaucoup) plus large de dates que SQL ou .NET DateTime (et c'est une garniture de dessert). Mon cours d'entité, qui se passe, est un wrapper autour de la classe instantanée de Nodatime. Je peux régler un temps à partir d'un long et obtenir un long sur une surface avec des méthodes comme .setFromLong (long instant) et .tolong ().

Actuellement, j'ai mon modèle fonctionnant, enregistrant des classes qui contiennent des propriétés du type Dot Net DateTime. Si à la place, je veux utiliser des propriétés de mon type personnalisé "se produire", comment dire à l'entité Framework comment les sauver?

Si je lis cet article sur la modélisation et la cartographie, suis-je sur la bonne voie ou manque-t-il quelque chose de plus simple?

http://msdn.microsoft.com/en-us/library/bb896343.aspx

J'utilise l'entité Framework 4.

Était-ce utile?

La solution

Ce que je recommande de faire, c'est d'ajouter 2 propriétés sur votre entité un nodatime et un long, et d'exclure votre propriété nodatime en utilisant [NotMappy] dans votre modèle EF, puis dans votre getter / setter mettre à jour le long.

c'est à dire

public class MyEntity{
   public long TimeAsLong{get;set;}
   [NotMapped]
   public Happening {
      get{
        return new Happening().SetFromLong(TimeAsLong);
      }
      set {
         TimeAsLong = value.ToLong();
      }
   }
}

L'effet de cela sera que le long est stocké dans la base de données, mais vous pouvez y accéder sur la classe via nodatime

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top