2010-12-07 2 views
0

Я хотел бы сохранить значения DateTime, используя тип datetime2 в SQL Server CE 3.5.Как я могу заставить объекты EF4 использовать тип datetime2 с SQL Server CE 3.5?

Если это возможно, как изменить модель данных сущности? Я попытался редактировать его вручную, и Visual Studio отказывается показывать его в дизайнере.

ответ

2

datetime2 не существует в SQL Server Compact, для того, чтобы сохранить Datetime2 ценности, вы должны сохранить в NVARCHAR (27) значение вида 'YYYY-MM-ДД чч: мм: ss.nnnnnnn' (см http://msdn.microsoft.com/en-us/library/ms171931.aspx)

+0

Имеет ли смысл иметь два поля: datetime (для YYYY-MM-DD hh: mm: ss) и int (для миллисекунд)? Вы можете присоединиться к ним в пользовательском интерфейсе, но такая структура имеет меньший размер и меньший индекс. – 2013-04-11 22:55:47

+0

Да, может быть, формат выше может быть легко преобразован обратно в datatime2 на сервере, что менее просто, если он разделен. – ErikEJ 2013-04-12 06:37:14

1

Если вы позаботитесь о размере своей базы данных (особенно если у вас есть индексы в этом поле), вы можете использовать другой подход.

Хранить в базе данных двух полей даты-времени (для YYYY-MM-ДД чч: мм: сс) и SMALLINT (для миллисекунды). И присоединяйтесь к ним, чтобы получить правильную дату DateTime перед отображением в пользовательском интерфейсе.

В этом случае размер этих полей будет 10 байт (в соответствии с this source, 8 байтов из DateTime + 2 байта для SMALLINT). Размер nvarchar (27) - 54 байта.

Смежные вопросы