none
WCF DataService(旧ADO.NET Data Services), フィールドの既定値を利用する方法について RRS feed

  • 質問


  • あるデータベースの、ある表の、ある列(datetime型)に、既定値で日付(getdate)を埋める設定をしました。(NULLは不可)
    この既定値をうまく利用するには、どこでどのような設定や操作を行う必要がありますか?

     

    私は、
    1)DBを元に、EDM(Entity Data Model)を作成しました。そして、WCF Data Service を追加し構成しました。
    2)クライアントアプリケーションを作成し、サービスの参照を行い、データグリッドから操作するように作成しました。
    3)ボタンを押すと、対象エンティティのSaveChangesメソッドを実行します。

     

    実行すると、更新などについては問題ありませんでした。
    しかし、挿入については、うまくいきません。(DBは更新されません)クライアントは500(Internal Error)と判定しています。

    直接EDMを利用するWinFormアプリで試してみると、
    {"datetime2 データ型から datetime データ型への変換の結果、範囲外の値になりました。
    ステートメントは終了されました。"}
    と、日付の変換でエラーとなっているようです。

    クライアントからは、日付(とIdentity列であるキー)は入力しません。

    サービス側のモデルデザイナで、対象の日付プロパティから、StoredGenratedePatternをIdentityにしてみましたが、変わりませんでした。
    (LINQ to SQL ではこんな感じで簡単に既定値を利用してくれた記憶があるのですが・・)
    エンティティ側で何か処置が必要だとは思うのですが・・・


    WCF Data Service を調べていて、うまくいう方法を見つけられなかったので、投稿しました。
    (というか、EDMの使い方の問題なので、このフォーラムは不適当かもしれませんが。)
    よろしくお願いします。


    DB:SQL Server 2008 Express
    IDE:VS2010
    Framework Version:4
    スタンドアロン環境です。


    K.Oumi
    2010年8月18日 5:20

回答

すべての返信

  • 下記URLが参考になるかもしれません。

    http://stackoverflow.com/questions/2740572/how-to-manage-getdate-with-entity-framework

    根本的な解決にはならないかもしれませんが・・・。

     


    なかむら(http://d.hatena.ne.jp/griefworker)
    • 回答としてマーク K.Oumi 2010年8月18日 10:24
    2010年8月18日 8:14
  • こんにちは

    ありがとうございます。
    十分に参考となりました。

    確かに、問題の直接的な解決ではありません。しかし、EDMならではの問題がこういう具合にあるんだなと確信できました。
    やはり、C/Sアプリなどとは違い、ストアドプロシジャや、トリガー、参考URLのような方法など、いろいろな方法を状況に応じて利用する必要があるって事なんだなぁと理解しました。

    ありがとうございました。


    K.Oumi
    2010年8月18日 10:23