【问题标题】:dbcontext.savechanges always saves default Valuedbcontext.savechanges 总是保存默认值
【发布时间】:2014-07-30 08:45:30
【问题描述】:

我有一个使用 Entity Framework 6.1,代码优先创建的 SQL-Azure 数据库。

我的“EmazeEvents”表中的“日期时间”字段是这样创建的:

datetime = c.DateTime(nullable: false, defaultValueSql: "GETUTCDATE()")

并在代码中这样定义:

[DatabaseGenerated(DatabaseGeneratedOption.Computed)] 
[Index]
public DateTime datetime { get; set; }

我理解这意味着如果在插入时省略了此字段,它将默认获得插入日期,确实如此。

但是,我无法插入设置此字段的行。虽然我设置了适当变量的值,但它仍然将默认日期写入数据库。

一些代码提取: EmazeEvents 是这样定义的:

public class EmazeEvents:DbContext
    {
        public EmazeEvents()
            : base("EmazeEvent")
        { }

public DbSet<EmazeEvent> events { get; set; }
    }
}

我做的是:

context = new EmazeEvents();
EmazeEvent e = new EmazeEvent();

// e.datetime does get the correct date
e.datetime = DateTime.ParseExact("2014-05-31T00:00:06.8900000", "O", CultureInfo.InvariantCulture);

context.events.Add(e);
context.SaveChanges();

写入数据库的记录具有当前日期时间,忽略 e.datetime 中的记录。

【问题讨论】:

    标签: sql entity-framework azure


    【解决方案1】:

    我发现问题出在“日期时间”字段的定义上。当我删除:

    [DatabaseGenerated(DatabaseGeneratedOption.Computed)] 
    

    它开始让我写除默认值之外的其他值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-25
      • 1970-01-01
      相关资源
      最近更新 更多