无法从EF“代码优先”保存日期时间到MySQL远程数据库

无法从EF“代码优先”保存日期时间到MySQL远程数据库

问题描述:

介绍无法从EF“代码优先”保存日期时间到MySQL远程数据库

我有一个MySQL表是这样的:

id - primary key 
name - string 
surname - string 
created_at - DateTime default 0000-00-00 00:00:00 
updated_at - Datetime default 0000-00-00 00:00:00 

这是我一直配件系列的远程表。我创建使用EF 6.应用程序工作正常,它从连接到基本的CRUD操作与只有一点点细节的驾驶我疯了一切本地WPF桌面应用程序。

首先,这里的实体边界表。

[Table("users")] 
public class User : Entity 
{ 
    #region Table Columns 
    private int _id; 
    private string _name; 
    private string _surname; 
    private DateTime _createdAt; 
    private DateTime _updatedAt; 
    #endregion 

    [Column("id")] 
    [Key] 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public int UserId 
    { 
     get { return this._id; } 
     set 
     { 
      this._id = value; 
      OnPropertyChanged(); 
     } 
    } 
    [Column("name")] 
    [Required] 
    public string Name 
    { 
     get { return this._name; } 
     set 
     { 
      this._name= value; 
      OnPropertyChanged(); 
     } 
    } 
    [Column("surname")] 
    [Required] 
    public string Surname 
    { 
     get { return this._surname; } 
     set 
     { 
      this._surname= value; 
      OnPropertyChanged(); 
     } 
    } 
    [Column("created_at")] 
    [DatabaseGenerated(DataBaseGeneratedOption.Computed)] 
    public DateTime CreatedAt 
    { 
     get { return this._createdAt; } 
     set 
     { 
      this._createdAt = value; 
      OnPropertyChanged(); 
     } 
    } 
    [Column("updated_at")] 
    public DateTime UpdatedAt 
    { 
     get { return this._updatedAt; } 
     set 
     { 
      this._updatedAt = value; 
      OnPropertyChanged(); 
     } 
    } 

    public User() 
    { 
     this.CreatedAt = DateTime.Now; 
     this.UpdatedAt = DateTime.Now; 
    } 
} 

别担心了抽象类实体,因为它只有在INotifyPropertyChanged的实施。

的的DbContext是相当直接的,它具有DBSet为实体,仅此而已无所不及。

问题

那么这个问题很简单,日期是不保存。例如,当我创建一个新用户,并将其保存日期将是默认的,即使我有明确规定的日期到一个有效的DateTime构造函数。

例如这个代码在这里:

User user = new User(); // Create a new User 
user.Name = "Foo"; 
user.Surname = "Bar"; 
App.RemoteContext.Users.Add(user); 
App.RemoteContext.Entry(user).State = System.Data.Entity.EntityState.Added; 
App.RemoteContext.SaveChanges(); 

它将创建在远程数据库中的用户与所有将被设置为0000-00-00 00正确的数据除了为created_at和的updated_at :00:00(默认)

我怎么能解决这个问题?

注意我不能改变的远程数据库类型和默认值。

FML

的问题是有关[DatabaseGenerated(DataBaseGeneratedOption.Computed)]如果您打算自己处理的日期应删除...