2017-10-19 5 views
0

Si j'ai un modèle de domaine qui ressemble à ceci:Comment puis-je utiliser un type générique avec core framework d'entité?

public class Foo<T> { 
    public Guid Id { get; set; } 
    public string Statement { get; set; } 
    public T Value { get; set; } 
} 

Je veux l'utiliser pour construire dans des types de données (string, int, etc ...) ainsi que la date. Je veux l'utiliser comme:

var foo = new Foo<string>(); 
foo.Value = "Hey"; 

comment puis-je persister à un base de données en utilisant EF Core?

j'imagine la table de base de données ressemblerait

| Id | Statement | ValueAsString | ValueAsDecimal | ValueAsDate | ValueAsInt | 
| 1 | NULL  | "Hey"   |    |    |   | 
| 2 | NULL  |    | 1.1   |    |   | 
+0

voir mon dernier commentaire. sur ma réponse Combien de colonnes obtiendriez-vous alors ...? Alors faites-le plus abstrait et créez une logique de coulée pour votre code –

Répondre

3

vous devriez toujours avoir une classe. Votre classe Foo devrait être abstraite. Vous obtiendrez ":

public abstract class Foo<T> { 
    public Guid Id { get; set; } 
    public string Statement { get; set; } 
    public T Value { get; set; } 
} 

alors votre classe d'implémentation serait:

public class Orders: Foo<Order> { 
} 

maintenant vous avez votre classe Orders avec votre type générique qui peut être stocké

+0

Merci pour la réponse: D Y a-t-il un moyen alternatif? point des génériques? – chris31389

+0

pourquoi est-ce que c'est comme ça? L'idée n'est-elle pas complète pour ne pas avoir à taper chaque lettre pour chaque modèle (domaine) pour les mêmes choses ..? Comment votre base de données ressemblerait-elle alors? Ou votre DTO ou d'autres modèles? –

+0

Je vais devoir créer une classe pour chaque type avec lequel je veux utiliser Foo? Si j'ai dit que je voulais seulement utiliser cela pour les types de base, est-ce que cela rend la tâche plus facile? – chris31389