Я пытаюсь сопоставить свойство TimeSpan Code First с SQL-сервером. Код Сначала, кажется, создает его как время (7) в SQL. Однако TimeSpan в .Net может обрабатывать более длительные периоды, чем 24 часа, и мне нужно хранить дольше 24 часов для длины события. Каков наилучший способ справиться с этим с помощью Code First.
Как сопоставить TimeSpan с более чем 24 часами для SQL Server Code First?
Ответ 1
public Int64 ValidityPeriodTicks { get; set; }
[NotMapped]
public TimeSpan ValidityPeriod
{
get { return TimeSpan.FromTicks(ValidityPeriodTicks); }
set { ValidityPeriodTicks = value.Ticks; }
}
Ответ 2
Насколько я знаю, нет эквивалентного типа данных в SQL Server для .NET TimeSpan. Самое близкое совпадение - Time, но, как вы указали, оно поддерживает только значения до 24 часов? http://msdn.microsoft.com/en-us/library/ms186724.aspx#DateandTimeDataTypes.
Следующий документ MSDN описывает этот http://msdn.microsoft.com/en-us/library/bb386909.aspx. Я предполагаю, что, поскольку там нет решения, в настоящее время это невозможно.
Ответ 3
Прежде всего, MVC не имеет ничего общего с этой проблемой. Он полностью связан с EF Code First и SQL Server, поэтому он имеет значение DAL.
Одним из решений может быть предоставление настраиваемого типа столбца в конфигурации вашего объекта, например:
modelBuilder
.Entity<MyClass>()
.Property(c => c.MyTimeSpan)
.HasColumnType("whatever sql type you want to use");