0

EntityFramework4。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; }
    }
}

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 
4

1 に答える 1

2

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);
       }
   }
}
于 2012-08-17T03:53:35.893 に答える