【问题标题】:automate process of record being inserted into database table using asp.net使用 asp.net 将记录插入数据库表的自动化过程
【发布时间】:2017-02-21 22:29:14
【问题描述】:

我是 asp.net 的新手。我试图在每个月的第一天或第二天自动将记录插入数据库表中。

我将插入的记录将是 DateTime.Now 记录插入的每一天。

我已经看到很多关于如何通过使用视图和表单来做到这一点,但我不确定如果没有这些并且仅通过应用程序中的自动化来完成。

我的模型和控制器目前如下:

报告模型

namespace CRMReporting.Models
{
    using System;
    using System.Collections.Generic;

    public partial class Reports
    {
        public int Report_ID { get; set; }
        public System.DateTime Date { get; set; }
    }
}

报告控制器

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create([Bind(Include = "Report_ID,Date")] Reports reports)
    {
        var day = DateTime.Now.Day;

        if (day == 1||day == 2)
        {
            reports.Date = DateTime.Now;
            db.Reports.Add(reports);
            db.SaveChanges();
            db.Reports.Add(reports);
        }

        return View(reports);
    }

数据库表的report_id字段为自增字段

谢谢大家

【问题讨论】:

  • 为什么你在两次插入之后没有写db.SaveChanges()

标签: c# asp.net asp.net-mvc entity-framework linq


【解决方案1】:

Asp.net 通过请求/响应工作,在您拥有计时器之前不会自动发生任何事情。您可以按用户请求保存数据。如果您希望这种情况一天只发生一次:

    var day = DateTime.Now.Day;
    // To avoid multiple insertion save the last insert date:
    if (day == 1||day == 2 && DateTime.Now.Date != (DateTime)Application["last_Saved"])
    {
        reports.Date = DateTime.Now;
        db.Reports.Add(reports);
        db.SaveChanges();
        Application["last_Saved"] = DateTime.Now.Date;
    }

但如果当天没有用户请求,您将无法插入。

作为一个想法,您的数据库设计似乎很糟糕,您可以找到更好的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-22
    • 1970-01-01
    • 1970-01-01
    • 2012-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多