2009-06-06 7 views
0

Pour un DataContext sur lequel je travaille, je ne veux pas charger les tables jusqu'à ce qu'elles soient nécessaires. Je veux faire une petite méthode qui vérifierait si une table est chargée avant de le charger, mais je finis par avoir des méthodes de n faire la même chose:Custom Générique GetTable

private void Load(ref Table<Order> Orders) 
{ 
    if (Orders == null) 
     Orders = this.GetTable<Order>(); 
} 

Je suis en train de faire un générique raisons évidentes, mais je reçois un "Le type 'T' doit être un type de référence afin de l'utiliser comme paramètre 'TEntity' dans le type générique ou la méthode 'System.Data.Linq.Table'" exception en faisant cela:

private void Load<T>(ref Table<T> TableToLoad) 
{ 
    if (TableToLoad == null) 
     TableToLoad = this.GetTable<T>(); 
} 
+0

vous savez que Linq2Sql ne charge aucune donnée lorsque vous accédez à GetTable non? Vous devez exécuter une requête, puis faire un ToArray() ou quelque chose comme ça pour que la requête fonctionne réellement –

Répondre

5

Ajoutez simplement 'where T: class' à votre méthode.

+0

Merci! Assez simple, mais si important. – Tipx