У меня небольшая проблема с обновлением существующего идентификатора, я не знаю точно, как отнести его к C#
, используя DAPPER
.
Моя идея заключается в том, что значение из флажка 1 = true, 0 = false
для определенного месяца, я вхожу в базу данных, в настоящее время я всегда делаю блок ELSE, как мне настроить, чтобы обновить идентификатор?
Это мой код:
private void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
int _value;
if (checkBox1.Checked)
_value = checkBox1.ImageIndex = 1;
else
_value = checkBox1.ImageIndex = 0;
using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["Zeiterfassung"].ConnectionString))
{
string insertQuery = @"IF EXISTS (SELECT * FROM [dbo].[MONATSSALDO] WHERE [ID]=@ID) //how to refer this id?
UPDATE [dbo].[MONATSSALDO] SET [MA_ID]=@MA_ID, [MONATSSALDO]=@MONATSSALDO, [DATUM]=@DATUM, [MONAT_IST_KONTROLLIERT]=@MONAT_IST_KONTROLLIERT WHERE [ID]=@ID
ELSE
INSERT INTO [dbo].[MONATSSALDO]([ID],[MA_ID], [MONATSSALDO], [DATUM], [MONAT_IST_KONTROLLIERT])
VALUES (@ID, @MA_ID, @MONATSSALDO, @DATUM, @MONAT_IST_KONTROLLIERT)";
var result = db.Execute(insertQuery, new { MA_ID=userID, MONATSSALDO= 4, DATUM = calendar1.CurrentDate, MONAT_IST_KONTROLLIERT = _value });
}
}
это похоже на мою схему на базе
CREATE TABLE [dbo].[MONATSSALDO](
[ID] [int] IDENTITY(1,1) NOT NULL,
[MA_ID] [int] NOT NULL,
[MONATSSALDO] [float] NOT NULL,
[DATUM] [date] NULL,
[MONAT_IST_KONTROLLIERT] [tinyint] NOT NULL,
CONSTRAINT [MONATSSALDO_ID] PRIMARY KEY NONCLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[MONATSSALDO] ADD CONSTRAINT [DF_MONATSSALDO] DEFAULT ((0)) FOR [MONATSSALDO]
GO
Идентификатор - это Идентичность, и он всегда увеличивается на 1. Возможно ли это вообще?