【发布时间】:2011-08-28 09:33:48
【问题描述】:
我正在使用 Entity Framework 4.1 引入的 DbContext 和 Code First API。
数据模型使用string和DateTime等基本数据类型。在某些情况下,我使用的唯一数据注释是[Required],但这不在任何DateTime 属性上。示例:
public virtual DateTime Start { get; set; }
DbContext 子类也很简单,看起来像:
public class EventsContext : DbContext
{
public DbSet<Event> Events { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Event>().ToTable("Events");
}
}
初始化器将模型中的日期设置为今年或明年的合理值。
但是,当我运行初始化程序时,我在context.SaveChanges() 收到此错误:
datetime2 数据的转换 类型为日期时间数据类型导致 在一个超出范围的值。这 语句已终止。
我完全不明白为什么会这样,因为一切都那么简单。我也不确定如何修复它,因为没有要编辑的 edmx 文件。
有什么想法吗?
【问题讨论】:
-
您可以使用 SQL Profiler 查看插入/更新 SQL 语句吗?很难说这里发生了什么 - 我们看不到您的初始化程序或实体。 SQL Profiler 将极大地帮助您定位问题。
-
在我的例子中,我在表格中添加了一个字段并编辑了表单,忘记更新绑定包含并且我的字段被设置为 NULL。所以这个错误帮助纠正了我的疏忽。
标签: c# .net entity-framework ef-code-first dbcontext