2017-02-21 25 views
0

私はasp.netを初めて利用しています。私は毎月1日か2日にレコードをデータベーステーブルに挿入する作業を自動化しようとしています。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; } 
    } 
} 

は、データベーステーブルのREPORT_IDフィールドが自動でコントローラー

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

レポート増分フィールド

ありがとうございました

+0

両方の挿入の後に 'db.SaveChanges()'を書かなかったのはなぜですか? –

答えて

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

しかし、その日にユーザーのリクエストがなければ、あなたは挿入されません。

アイデアとしては、データベースデザインが悪いようですが、より良い方法を見つけることができます。

関連する問題