Значение по умолчанию для столбца используется только при выполнении операции INSERT
и либо:
- Столбец не включен в список столбцов для операции вставки, либо,
- Столбец включен в список столбцов для операции вставки, но соответствующая позиция в списке
VALUES
задается как DEFAULT
, например:
INSERT INTO Table1 (FileName,/* other columns */)
VALUES(DEFAULT,/* other values */)
Я предполагаю, что, какой бы ни был ваш уровень данных (вы не указали один, который я вижу), не способен сгенерировать оператор INSERT
в этой форме.
Ваш код:
using (SqlCommand comm = new SqlCommand("INSERT INTO Teachers(Name, PictureFileName, Blog, IsAdmin) VALUES (@Name, @PictureFileName, @Blog, @IsAdmin);", conn))
Вам потребуется добавить новый код, например:
string insertStatement = "INSERT INTO Teachers(Name, Blog, IsAdmin";
if(!String.IsNullOrWhitespace(/* Wherever you get the picture file name from */)
{
insertStatement += ", PictureFileName";
}
insertStatement += ") VALUES (@Name, @Blog, @IsAdmin";
if(!String.IsNullOrWhitespace(/* Wherever you get the picture file name from */)
{
insertStatement += ", @PictureFileName";
}
insertStatement += ");";
Затем используйте эту переменную insertStatement вКонструктор SqlCommand
. Возможно, вы захотите добавить условное добавление параметра @PictureFileName
, и, если это критическая часть приложения, вы можете использовать построитель строк для создания этого оператора вставки или использовать код форматирования строки.