Я использую то, что я считаю очень стандартным кодом C # и T-SQL, для заполнения столбца типа данных char(1)
на основе C # enum
значениями char
:
Явижу звездочку *
, записанную в дБ, когда C
должен быть записан - но я не смог найти последовательного репо, и я понятия не имею, как это могло произойти.
Некоторые вопросы, как можнов мою базу данных будет вставлена строка, содержащая значение, отсутствующее в моем перечислении?Имеет ли звездочка какое-то особое значение в этом контексте?
Вот типичный код - для удобства чтения:
CREATE TABLE [MY_TABLE](
[ID] [bigint] IDENTITY(1,1) NOT NULL,
[STATUS] [char](1) NOT NULL,
PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
CREATE PROCEDURE [INSERT_TO_MY_TABLE]
(
@status [char](1)
)
AS
BEGIN
INSERT INTO [MY_TABLE]
(
[STATUS]
)
VALUES
(
@status
)
END
public enum Status
{
Adult = 'A',
Juvenile = 'J',
Child = 'C'
}
Statu status = Status.Child;
using (var command = connection.CreateCommand())
{
command.CommandText = $"INSERT_TO_MY_TABLE";
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add(new SqlParameter($"@status", (char)status));
command.ExecuteNonQuery();
}