【问题标题】:Write each date in date range to the db将日期范围内的每个日期写入数据库
【发布时间】:2013-11-15 22:35:26
【问题描述】:

我正在尝试获取开始日期和结束日期,并在数据库中为从开始日期到结束日期的每一天创建一行。 rf_date 列应该将日期从循环写入数据库。我的问题是写入数据库的日期是今天的日期。

if (booking.arrival_date != null && booking.departure_date != null)
{
DateTime startDate;
DateTime.TryParse(booking.arrival_date.ToString(), out startDate);

DateTime endDate;
DateTime.TryParse(booking.departure_date.ToString(), out endDate);

for (DateTime date = startDate; date <= endDate; date = date.AddDays(1))
{
    bookingRoomFlow newroomflow = new bookingRoomFlow();
    newroomflow.bookingid = bookingid;
    newroomflow.rf_date = date;

    roomflows.Add(newroomflow);

    if (ModelState.IsValid)
    {
        db.bookingroomflows.Add(newroomflow);
        db.SaveChanges();
    }
}
}

我的代码有什么明显的问题吗?

【问题讨论】:

  • 您是否确认,在将日期添加到数据库之前 - 添加的值是正确的?
  • 嗯,我从数据库中的日期时间字段中获取日期,并且此代码包含在“如果日期”中(我已经更新了上面的代码),所以我很有信心...
  • 在此处设置断点并单步执行。这样你就肯定知道了。
  • 是的,我先确认一下。可能是进入数据库的日期不正确。
  • 好的 - 我通过了,正确的值在汽车中。在,newroomflow.rf_date = 日期;正确的日期在那里。

标签: c# sql-server asp.net-mvc entity-framework edmx


【解决方案1】:

我认为这是另外一回事,因为您的循环代码看起来很正确。我用示例开始、结束日期对其进行了测试,如下所示。

namespace DateIncrementTest
{
    using System;

    class Program
    {
        static void Main(string[] args)
        {
            ProcessDates();
            Console.WriteLine("Press a key to Exit...");
            Console.ReadKey();
        }

        private static void ProcessDates()
        {
            DateTime startDate;
            DateTime.TryParse("1/1/2013", out startDate);

            DateTime endDate;
            DateTime.TryParse("1/7/2013", out endDate);

            for (DateTime date = startDate; date <= endDate; date = date.AddDays(1))
            {
                Console.WriteLine("Current Value for Date = {0}", date.ToShortDateString());
            }
        }
    }
}

控制台输出如下。

Current Value for Date = 1/1/2013
Current Value for Date = 1/2/2013
Current Value for Date = 1/3/2013
Current Value for Date = 1/4/2013
Current Value for Date = 1/5/2013
Current Value for Date = 1/6/2013
Current Value for Date = 1/7/2013
Press a key to Exit...

你检查了吗

  1. 如果该表上有任何触发器将列的值更新为当前日期?或
  2. 如果列具有将其设置为当前日期的默认值,并且不知何故在更新中传递了一个空值,从而使默认值生效?

【讨论】:

  • @EthanPelton 那么...问题是什么?
  • 数据库中的自动值 - getDate() - 但是,删除它可能无法解决整个问题。它现在什么也没做——没有错误,没有数据——但我正在出门的路上。下周我会尽量让你知道。
  • 最后一个问题是我还有 .Property(d => d.rf_date).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed);现在一切正常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-07
  • 2021-05-06
  • 1970-01-01
  • 2014-09-29
  • 1970-01-01
  • 2010-11-26
相关资源
最近更新 更多