dbcontext.savechanges始终保存默认值

时间:2014-06-09 18:31:00

标签: sql entity-framework azure

我有一个使用Entity Framework 6.1,Code-First。

创建的SQL-Azure数据库

我的'EmazeEvents'表中的“datetime”字段是这样创建的:

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中的记录。

1 个答案:

答案 0 :(得分:0)

我发现问题出在'datetime'字段的定义上。当我删除了:

[DatabaseGenerated(DatabaseGeneratedOption.Computed)] 

它开始让我写下默认值以外的其他值。