'System.String'から 'System.TimeSpan'への無効なキャストEF 4.1/MySql Connector/Net 6.4.4

For the life of me I cannot get this bug figured out - I have two time fields in mysql, properly mapping as Timestamp fields in ASP.net Entity Framework. I can assign and INSERT into the db no problem, however, whenever I try to load the data back out by simply querying the database I receive the following error message: Invalid cast from 'System.String' to 'System.TimeSpan'

        using (hydraEntities db = new hydraEntities())
        {

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

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

0
あなたはタイムパンをしてもよろしいですか?通常、dateTimeを使用します。
追加された 著者 Luke McGregor,
TimeSpanクラスは時刻を格納しません。これは2つの日付の比較を表します。 DateTimeはあなたの後にある可能性が高いです。
追加された 著者 M.Babcock,
私が唯一の時間と特定の日付を格納していないので、はい、時間が優先されます。たとえば、特定の職場の従業員が8時から5時まで、月曜日から金曜日まで働くなど、複数の日付に時間が発生する可能性があります。私は開始時間と終了時間だけを保存する
追加された 著者 99823,
mysqlでそれを時間として保存する - しかし、asp.netエンティティのフレームワークはそれを時間軸
追加された 著者 99823,
私はdatetimesに切り替えました - その理想的な状況ではありませんが、コメント仲間に感謝します
追加された 著者 99823,

2 答え

このようなものを試してみてください。TimeSpanはLengthを扱っていますが、おそらくTimeStampを意味しています。 あなたがTimeSpanを意味していた場合、これまでどんなことが起こっているのですか。

TimeSpanは動作します。ここでは使用できるものがあります。問題は、このコード例で貼り付けたものとミリ秒を置き換えるtimespanフィールドのミリ秒数を把握する必要があることです

DateTime dt = new DateTime().Add( TimeSpan.FromMilliseconds( 1304686771794 ) ) 
1
追加された
それは実際に動作します..これは、データ型の変換に沸騰する..私はあなたが持っている問題を修正することができることを願って..
追加された 著者 MethodMan,
問題は、コードがEntity Frameworkによって自動的に生成されることです。したがって、コードに関しては何を提供するのかという手掛かりはありません。
追加された 著者 99823,
こんにちはDJ - 私はDateTimeに切り替えました - 私はtimespan/timeフィールドがうまくいきたいと思っていましたが、彼らはしませんでした。残念ながら私はmysqlのタイムスタンプとEFが動作しないことを知っています - あなたの助けに感謝
追加された 著者 99823,

Ok so this post is about how people have approached storing the time of day. C# DateTime: What "date" to use when i'm using just the "time"?

実際にはC#で理解できるものではありません。タイムパンを本当にしたいのであれば、タイムパンでティック数のデータベースのintとしてそれをストアし、次にモデルで変換するのが最善でしょう。

もう1つの選択肢は、時間/分のコンポーネントを自分のデータ構造に格納することだけです。

例えば

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);
        }
    }
}
0
追加された