Je travaille sur un service Web pour créer, modifier et supprimer des réservations d'hôtel (réservations). Une réservation peut contenir plusieurs séjours (un séjour est un lien entre une chambre, les services commandés, etc.). Chaque séjour a sa propre période de temps, de sorte que vous pouvez créer 3 séjours dans la même réservation, pour 3 semaines différentes.C# LINQ État de DeleteOnSubmit()
Mon problème se pose lorsque les réservations doivent être modifiées. L'entrée est l'identifiant de réservation (comme vu ci-dessus) ainsi que les nouvelles données sur les séjours souhaités. Donc, si les séjours d'origine étaient 2 chambres individuelles et 1 chambre double, chacune avec leurs propres dates de début et de fin, et le client a souhaité changer une des chambres simples à une chambre double, il enverrait: 1 simple, 2 doubles, et c'est à moi de comprendre ce qui a changé (cela ne va pas changer, donc je crains que toutes les solutions suggérant de changer ceci soient sorties).
J'utilise LINQ pour choisir les séjours actuels et les fixer pour la suppression
var oldStays = (from stay in persistentStorage.DataContext.Stays
where stays.booking_id == bookingId
select stay);
persistentStorage.DataContext.Stays.DeleteAllOnSubmit(oldStays);
Avant que je puisse les supprimer, mais, je dois vous assurer qu'il ya des chambres disponibles pour les nouveaux séjours. Une solution de facilité serait que LINQ considère automatiquement ces enregistrements comme supprimés lors de nouvelles requêtes (ce qui signifie que je n'aurais pas à me soucier des dates, des salles existantes, etc.). Si tel est le cas, le problème est déjà résolu. Sinon, j'ai besoin d'un moyen de vérifier les nouvelles réservations disponibles tout en ignorant les séjours qui n'ont pas changé (dans le cas ci-dessus, je voudrais seulement vérifier si une chambre double était disponible dans la période donnée , puisque l'autre double et single sont déjà réservés). Y a-t-il une manière intelligente dont LINQ peut aider à cela, et si oui, comment?
Une partie de ma question était, comment puis-je le fais à travers LINQ to SQL? Et j'ai lu quelque part que SubmitChanges fait tout rouler dans une transaction, mais est-ce que les requêtes de suppression non validées sont prises en compte lors de certaines requêtes select? –
Si vous ne définissez pas une transaction, vous obtiendrez une implicite, mais si vous définissez le TransactionScope vous-même, vous avez le contrôle sur la transaction et SubmitChanges ne la validera pas pour vous. – laktak