Je crée un planificateur de tâches sur SQL Server 2008.
J'ai une table que j'utilise pour stocker des tâches. Chaque tâche est un nom de tâche (par exemple, ImportFile) et des arguments. Je stocke les arguments dans la colonne XML, car les différentes tâches ont des signatures différentes.Sélection d'une table à l'aide de la colonne XML
Table est comme suit:
Id:integer(PK) | operation:nvarchar | Arguments:xml
Avant faire la queue une tâche, je dois souvent pour vérifier que la tâche donnée n'a pas encore été prévue. La recherche est effectuée en fonction des opérations et des arguments. En utilisant Linq-to-Sql, comment puis-je vérifier si une opération donnée + args est déjà présente dans la file d'attente?
Je cherche quelque chose comme:
var isTaskScheduled = db.Tasks.Any(t =>
t.Opearation == task.Operation &&
t.Arguments == task.ArgumentsAsXElement);
(qui ne fonctionne pas parce que SQL Server ne peut pas comparer le type XML)
Toutes les suggestions de mise en œuvre d'autres?
Oui, raisonnable. Mais j'ai un problème avec une partie * assez sûre. J'espérais qu'il existe une meilleure solution.Une variante de cette approche consiste à utiliser le CRC pour réduire significativement le sous-ensemble de résultats, puis (si plus d'un résultat est renvoyé), faire une comparaison XML (coûteuse). –