无法从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)]
如果您打算自己处理的日期应删除...