使用asp.net自动化记录插入数据库表的过程

时间:2017-02-21 22:29:15

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

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

我将插入的记录将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字段是一个自动增量字段

谢谢你们

1 个答案:

答案 0 :(得分:0)

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;
    }

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

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