2011-01-04 2 views
0

Dans subsonique 2, nous pourrions faire ceci:Subsonic Supprimer Fluent Query Tool

public static void DeleteTable(SubSonic.TableSchema.Table table) 
{ 
    new Delete().From(table).Execute(); 
} 

Comment pouvons-nous faire la même chose en v3? Je ne peux que trouver de la documentation sur l'utilisation de génériques pour cibler une table spécifique dans la base de données ... Je veux pouvoir l'utiliser avec un paramètre comme ci-dessus.

Merci

Répondre

1

je l'ai eu. Cela semble faire l'affaire:

public static void DeleteTable(DatabaseTable table) 
{ 
    new Delete<object>(table, table.Provider).Execute(); 
} 
+0

Je ne connais pas Subsonic, mais Delete me semble faux. Êtes-vous sûr que ce n'est pas Delete (table) .Execute(); – kenny

+0

Cela fonctionne, le problème est que les concepteurs mis en œuvre cette méthode pour les génériques, je ne peux pas utiliser de génériques .... parce que je veux faire la suppression .... générique (ho l'ironie). Il semble que lorsque vous utilisez la surcharge de suppression qui accepte la table de base de données en paramètre, la méthode ignore T – Luis

0

Vous utilisez la méthode SimpleRepository.DeleteMany en quelque sorte comme celui-ci

var repo = new SimpleRepository("ConnectionString"); 
repo.DeleteMany<YourClass>(x => true); 

Ou (après avoir lu votre commentaire) quelque chose comme ça

public static void DeleteTable(DatabaseTable table) 
{ 
    new SubSonic.Query.Delete<object>(table, ProviderFactory.GetProvider()); 
} 

Le générique type "object" est utilisé parce que Delete veut un type passé, qui n'est pas utilisé dans le cas où nous le créons en utilisant une table et un fournisseur.

+0

Cela ne fonctionnera pas car elle ne me permettra que de l'utiliser pour mon entité YourClass, je veux une méthode qui accepte un paramètre qui est mon table de base – Luis