2011-12-19 7 views
0

私の人生にとっては、このバグを理解できません - 私はmysqlに2つの時間フィールドASP.net Entity Frameworkのタイムスタンプフィールドとして使用します。私は割り当てることができますし、dbに問題は、しかし、私は単にデータベースを照会することによってデータを読み込みしようとすると、次のエラーメッセージが表示されます。'System.String'から 'System.TimeSpan''System.String'から 'System.TimeSpan'への無効なキャストEF 4.1/MySql Connector/Net 6.4.4

 using (hydraEntities db = new hydraEntities()) 
     { 

      Employer = db.employers.Include("address").Where(em => em.EmployerId == EmployerId).First(); 
     } 

私はそれを把握することはできません、私はそれがバグを解決するだろう祈っ最新リリースにMySQLのコネクタをアップグレードした - しかし、それを修正しませんでした。どんな助けでも大いに感謝されるでしょう!

+2

はあなたがタイムスパンをよろしいですか?通常、dateTimeを使用します。 –

+0

そうです - 私は一日だけの時間と特定の日付を保存していないので、時間が複数の日付に発生する可能性があります。例えば、従業員が8時から5時まで働く特定の位置、だから私は開始時刻と終了時刻を格納する – 99823

+1

TimeSpanクラスは、時刻を格納しません。これは2つの日付の比較を表します。 DateTimeはあなたの後にある可能性が高いです。 –

答えて

1

このようなものを試してみてください。TimeSpanは長さを扱っているかもしれません。おそらくTimeStampを意味します。 TimeSpanを意味するとしたらどうなりますか?

のTimeSpanが働くだろう

...ここにあなたが使用できる何かが、問題は、あなたが、私はこのコード例で貼り付けたもので、あなたのミリ秒を交換するタイムスパンフィールドに何のミリ秒を把握する必要があります..ですです

DateTime dt = new DateTime().Add(TimeSpan.FromMilliseconds(1304686771794)) 
+0

問題コードはEntity Frameworkによって自動生成されているので、コードに関して何を供給するのかわからない - – 99823

+0

こんにちはDJ - 私はDateTimeに切り替えました。彼らは正しく働いていませんでした。残念ながら、mysqlのタイムスタンプとEFが動作しない限り、あなたの助けを借りて – 99823

+0

これは実際には動作します。これはデータタイプの変換になります。あなたが持っている問題を修正できることを願っています。 。 – MethodMan

0

だから、この記事は、人々が時刻の格納にどのように近づいてきたかについてです。 C# DateTime: What "date" to use when i'm using just the "time"?

C#がそのように理解しているものではなく、何かが回避策です。タイムパンを本当にしたいのであれば、タイムパンでティック数のデータベースのintとしてそれをストアし、次にモデルで変換するのが最善でしょう。

別のオプションは、時間/分のコンポーネントを自分のデータ構造に格納することだけです。

例えば

public class TimeOfDay 
{ 
    public int Hours{get;set;} 
    public int Minutes{get;set;} 

    //possibly even 
    public TimeSpan TimeSpan 
    { 
     get 
     { 
      return new TimeSpan(new DateTime(2000,1,1,Hours,Minutes,0).Ticks -new DateTime(2000,1,1).Ticks); 
     } 
    } 
} 
関連する問題