Возможно, это старая ветка, но я опубликую свои выводы по этому вопросу для других:
Допустим, у нас есть dev env: EF 5, CodeFirst, SqlCE 4.0:
public abstract class Entity : IEntity, IEquatable<Entity>
{
public virtual int Id { get; protected set; }
public virtual DateTime LastModified { get; set; }
[DataType(DataType.Date)]
public virtual DateTime CreatedOn { get; set; }
[DataType(DataType.DateTime)]
public virtual DateTime CreatedOn2 { get; set; }
[DataType(DataType.Time)]
public virtual DateTime CreatedOn3 { get; set; }
public virtual DateTime CreatedOn4 { get; set; }
}
с таким настраиваемым отображением:
public EntityMapping()
{
HasKey(e => e.Id);
Property(e => e.Id);
Property(e => e.LastModified).IsRequired().IsConcurrencyToken();
Property(e => e.CreatedOn).IsRequired();
Property(e => e.CreatedOn2).IsRequired();
Property(e => e.CreatedOn3).IsRequired();
Property(e => e.CreatedOn4).IsRequired();
}
Это создает this , что означает, что у нас будет исключение переполнения.
Изменение сопоставлений с этим, пока ещеработа с SQL CE 4.0:
Property(e => e.CreatedOn).IsRequired().HasColumnType("datetime2");
Property(e => e.CreatedOn2).IsRequired().HasColumnType("date");
Property(e => e.CreatedOn3).IsRequired().HasColumnType("date");
Property(e => e.CreatedOn4).IsRequired().HasColumnType("datetime2");
Дает эту ошибку .Переход на SQL Server Standart 2012, похоже, решает проблему (это точно не решение - только для эксперимента).Созданная схема SQL Server this .
Я не эксперт по SQL, но мне кажется, что SQL CE не поддерживает эти даты .проблема с развитием окр.остается.DateTime может быть заменен, но может принести много рефакторинга здесь и там.
Помните также, что SqlDateTime и DateTime сильно отличаются .
Решение, которое я считаю хорошимдля кода и для жизненного цикла проекта - это переключение между LocalDb и стандартом SQL, как предлагается по одной из приведенных выше ссылок из stackoverflow, в сочетании с пользовательскими настройками отображения fluentApi для выравнивания создания модели или обоих.
Представляем Пользовательское соглашение в EF также выглядит неплохо.
Если у кого-то есть лучшее универсальное решение для кода и для разработки, выложите его.