C# 实体框架:将varchar映射到DateTime属性

C# 实体框架:将varchar映射到DateTime属性,c#,.net,mysql,entity-framework,orm,C#,.net,Mysql,Entity Framework,Orm,实体框架4。MySQL 我试图将varchar列映射到类的DateTime属性 我的班级: [Table("webnews_in")] public class WEBNews_in : AbsNews { private DateTime _inDateTimeAdded = DateTime.MinValue; public DateTime InDateTimeAdded { get { return _inDateTimeAdded; }

实体框架4。MySQL

我试图将varchar列映射到类的DateTime属性

我的班级:

[Table("webnews_in")]
public class WEBNews_in : AbsNews
{
    private DateTime _inDateTimeAdded = DateTime.MinValue;

    public DateTime InDateTimeAdded
    {
        get { return _inDateTimeAdded; }
        set { _inDateTimeAdded = value; }
    }

    private DateTime _inDateTimeUpdated = DateTime.MinValue;

    public DateTime InDateTimeUpdated
    {
        get { return _inDateTimeUpdated; }
        set { _inDateTimeUpdated = value; }
    }
}


我得到了这个错误:

    Input string was not in a correct format. 
    Message Input string was not in a correct format. 
    Data IDictionary (0 items) 


StackTrace    at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
   at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
   at MySql.Data.Types.MySqlDateTime.ParseMySql(String s)
   at MySql.Data.MySqlClient.MySqlDataReader.GetDateTime(Int32 i)
   at MySql.Data.Entity.EFMySqlDataReader.GetDateTime(Int32 ordinal) 
HelpLink null  
Source mscorlib 

每次在模型中设置与表不同的类型时,EF都会抛出错误,即,如果在模型中将字段设置为整数,但该字段在表中具有字符串类型,则在加载数据时,它将给您一个错误。为了避免这种情况,您必须采取变通办法,声明一个表类型等效的公共属性,并将其转换为所需的模型类型,请尝试以下操作:

[Table("webnews_in")]
public class WEBNews_in : AbsNews {

   private DateTime _inDateTimeAdded = DateTime.MinValue;

   public string InDateTimeAdded {
       get {
           return Format(_inDateTimeAdded, " dd/MM/yyyy hh:mm:ss tt");
       }
       set {
           _inDateTimeAdded = DateTime.Parse(value);
       }
   }

   private DateTime _inDateTimeUpdated = DateTime.MinValue;

   public string InDateTimeUpdated {
       get {
           return Format(_inDateTimeUpdated, " dd/MM/yyyy hh:mm:ss tt");
       }
       set {
           _inDateTimeUpdated = DateTime.Parse(value);
       }
   }
}

您能解释一下为什么需要
varchar
作为
date
字段吗?你知道,这是历史遗留下来的问题,而不是
datetime
@JamesKhoury。一切都是varchar或integer如果数据有效,我个人会尝试更改数据库。将来可能不会让您头痛。但是属性“InDateTimeAdded”仍然是字符串,并且我仍然无法使用DateTime类型属性??
[Table("webnews_in")]
public class WEBNews_in : AbsNews {

   private DateTime _inDateTimeAdded = DateTime.MinValue;

   public string InDateTimeAdded {
       get {
           return Format(_inDateTimeAdded, " dd/MM/yyyy hh:mm:ss tt");
       }
       set {
           _inDateTimeAdded = DateTime.Parse(value);
       }
   }

   private DateTime _inDateTimeUpdated = DateTime.MinValue;

   public string InDateTimeUpdated {
       get {
           return Format(_inDateTimeUpdated, " dd/MM/yyyy hh:mm:ss tt");
       }
       set {
           _inDateTimeUpdated = DateTime.Parse(value);
       }
   }
}