SQL Server 2014 имеет неожиданное поведение: если вы определяете таблицу со значением по умолчанию, скажем, int
, например 6, а затем пытаетесь ввести некоторые нестандартные столбцы, SSMS отвечает сообщением о том, что строка была введена, но не может t будет прочитан и предлагает вам завершить операцию, запустив выполнение запроса, который не отображается. Затем операция завершается. Так что это не серьезный провал. Однако на более высоком уровне абстракции выполнение SaveChanges()
не приводит к ошибке, а записывает ноль в столбец по умолчанию.
Вот тестовая таблица
CREATE TABLE [dbo].[TestDefaultInsert]
(
[Id] INT NOT NULL PRIMARY KEY IDENTITY,
[ColumnWithDefault] INT NOT NULL DEFAULT ((6)),
[ColumWithUserdata] NVARCHAR(50) NOT NULL
)
Вот тестовая программа:
class Program
{
static void Main(string[] args)
{
using (var insertDbContext = new TestDefaultInsertionEntities())
{
var testDefaultInserts = insertDbContext.TestDefaultInserts;
TestDefaultInsert di = new TestDefaultInsert();
di.ColumWithUserdata = "SimpleData";
//di.ColumnWithDefault = 8; // zeros are inserted
// instead of the default value of 6
// 8 inserted correctly
// when this line is uncommented.
insertDbContext.TestDefaultInserts.Add(di);
insertDbContext.SaveChanges();
foreach( var t in testDefaultInserts)
{
Console.WriteLine(t.ColumnWithDefault);
}
Console.ReadLine();
}
}
}