Nous avons une table Personnes qui stocke différents types de personnes (acheteur, vendeur, agent, etc.). Notre ORM est Entity Framework CodeFirst (CTP5). Nous utilisons le modèle de référentiel pour un bon TDD et moqueur. Dans le PersonRepository je veux retourner un type spécifique afin que je puisse faire des choses comme ceci:Generics and Entity Framework: Comment retourner un type différent en fonction d'une valeur de colonne
Agent a = repository.Get<Agent>(5005); // Where 5005 is just an example Id for the person
a.SomeAgentProperty = someValue;
Buyer b = repository.Get<Buyer>(253); // Again, a simple PersonId.
b.SomeBuyerProperty = someOtherValue;
L'idée est que je sais quel genre de personne que je reçois quand je reçois du référentiel. Et, oui, je pourrais juste créer X différentes méthodes Get appelées GetBuyer (int PersonId), GetSeller (int PersonId) et ainsi de suite. Mais cela a une odeur de code.
À quoi ressemblerait la fonction générique?
Voici mon interface de dépôt jusqu'à présent:
public interface IPersonRepository
{
Person Get(int PersonId); // To get a generic person
T Get<T>(int PersonId); // To get a specific type of person (buyer, agent, etc.)
void Save(Person person);
void Delete(int p);
}
Et ma mise en œuvre concrète:
public T Get<T>(int PersonId)
{
//Here's my question: What goes here?
}
Je voudrais pouvoir voir le code de charge, comment obtient-il le contexte? –