partial void DeleteDatabaseDate(DatabaseDate instance);
 partial void InsertDatabaseDate(DatabaseDate instance);
 partial void UpdateDatabaseDate(DatabaseDate instance);
        //---------------------------------------------------------登録/更新
        /// <summary>
        /// 新規にデータベースへプロセスを登録
        /// </summary>
        /// <param name="proc">登録するプロセス</param>
        /// <returns>登録したID</returns>
        internal int Register(Process proc)
        {
            DatabaseApplication app = new DatabaseApplication();
            app.Title = proc.MainWindowTitle;
            app.Favorite = false;
            database.DatabaseApplication.InsertOnSubmit(app);
            RetryHelper.Retry(() =>
            {
                database.SubmitChanges();
            },
            ex => ExceptionDispatchInfo.Capture(ex).Throw(),
            ex => ex is SqlException);

            //SubmitChanges()すると挿入したIDが取得できるようになる
            var id = app.Id;

            #region 取得したIDを元にProcessDBに登録
            DatabaseProcess pro = new DatabaseProcess();
            pro.AppId = id;
            pro.Name = proc.ProcessName;
            pro.Path = proc.MainModule.FileName;
            database.DatabaseProcess.InsertOnSubmit(pro);
            #endregion

            #region 取得したIDを元にDateDBに登録
            DatabaseDate date = new DatabaseDate();
            date.AppId = id;
            date.AddDate = date.LastDate = DateTime.Now;
            date.UsageTime = "0.00:00:00";
            date.AlertTime = "0.00:00:00";
            database.DatabaseDate.InsertOnSubmit(date);
            #endregion

            RetryHelper.Retry(() =>
            {
                database.SubmitChanges();
            },
            ex => ExceptionDispatchInfo.Capture(ex).Throw(),
            ex => ex is SqlException);

            //レコード新規登録のイベント発生
            if (NewRecord_Registered != null)
            {
                NewRecord_Registered(this, EventArgs.Empty);
            }

            return id;
        }