c# - Entity Framework : map varchar to DateTime property

标签 c# .net mysql entity-framework orm

Entity Framework 4 . MySQL

我正在尝试将 varchar 列映射到类的 DateTime 属性

我的类(class):

[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; }
    }
}
<小时/>
CREATE TABLE webnews_in
    (
    Id                INT NOT NULL auto_increment,
    VPN_AC              VARCHAR (20) NULL,
    InDateTimeAdded   VARCHAR (50) NULL,
    InDateTimeUpdated VARCHAR (50) NULL

    PRIMARY KEY (Id)
    );
<小时/>

我收到此错误:

    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都会抛出错误,即,如果在模型中将字段设置为整数,但该字段在表中具有字符串类型,则在加载时数据它会给你一个错误。为了避免这种情况,您必须采取解决方法,声明与表类型等效的公共(public)属性并将其转换为模型所需的类型,请尝试如下操作:

[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);
       }
   }
}

关于c# - Entity Framework : map varchar to DateTime property,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11999235/

相关文章:

c# - 确定文件移动的目标是否在 C# 中的同一文件系统上

c# - WinForms:如何检查 C# 文本框中的最少字符数?

mysql - SUM 同一列用户得分

c# - C++ 等效于 C# 嵌套私有(private)类

c# - 尝试解析 html 以进行 pdf 转换时出现 ItextSharp 错误

.net - 多线程环境中的对象生存期

MySQL:按日期接近分组?

c# - 求两个向量之间的斜率(以度为单位)

c# - 读取文件时引发事件?

php - 需要帮助使用 PDO 语句在嵌套 while 循环中正确打印结果