首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DeleteOnSubmit()的C# LINQ状态

DeleteOnSubmit()的C# LINQ状态
EN

Stack Overflow用户
提问于 2009-03-27 14:21:24
回答 1查看 6.6K关注 0票数 2

我正在开发一个用于创建、更改和删除酒店预订(预订)的web服务。一次预订可以包含多个住宿(一个住宿是房间之间的链接,所订购的服务等)。每个住宿都有它自己的时间段,所以你可以在同一个预订中创建3个住宿,为期3个不同的星期。

当需要更改预订时,我的问题就出现了。输入是预订id (如上所示)以及想要的住宿的新数据。因此,如果最初的住宿是2个单人间和1个双人间,每个房间都有自己的开始和结束日期,并且客户希望将其中一个单人间更改为双人间,他会发送:1个单人间,2个双人间,然后由我来确定发生了什么变化(这是不会改变的,所以我担心任何建议改变这一点的解决方案都已过时)。

我使用LINQ挑选出当前的保留并将它们设置为删除

代码语言:javascript
复制
var oldStays = (from stay in persistentStorage.DataContext.Stays 
                where stays.booking_id == bookingId 
                select stay);
persistentStorage.DataContext.Stays.DeleteAllOnSubmit(oldStays);

但是,在删除它们之前,我需要确保有可供新住宿使用的房间。一个简单的解决方法是,当进行新的查询时,LINQ自动假设这些记录已删除(这意味着我不必担心日期、现有房间等)。如果是这样的话,问题已经解决了。

如果没有,我需要一些方法来检查新的可用预订,同时忽略没有改变的住宿(在上面的情况下,我只需要检查在给定的时间段内是否有双人间可用,因为其他双人房和单人房已经预订了)。LINQ有没有一些聪明的方式可以帮助这一点,如果是的话,如何?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-03-27 14:39:59

您应该能够通过使用事务来获得预期的行为:

check are the >创建一个transaction

  • delete your bookings

  • 检查新房间是否可用并预订它们如果一切正常,请回滚

EDIT - Sample (使用SQL transaction,您还可以使用TransactionContext):

代码语言:javascript
复制
try
{
  persistentStorage.DataContext.Transaction=persistentStorage.DataContext.Connection.BeginTransaction();

  var oldStays = (from stay in persistentStorage.DataContext.Stays 
                where stays.booking_id == bookingId 
                select stay);
  persistentStorage.DataContext.Stays.DeleteAllOnSubmit(oldStays);
  persistentStorage.DataContext.SubmitChanges();

  // do you select/insert/etc.

  if (ok)
    persistentStorage.DataContext.Transaction.Commit();
}
finally
{
  if (persistentStorage.DataContext.Transaction!=null) persistentStorage.DataContext.Transaction.Dispose();
  persistentStorage.DataContext.Transaction=null;
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/689948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档