- PR -

ADO.NET

1
投稿者投稿内容
まこと
会議室デビュー日: 2009/03/28
投稿数: 4
投稿日時: 2009-03-28 02:12
お世話になっております。
まことと申します。

いつも参考にさせていただいております。

現在、ADO.NET Data Serviceを使用したSilverlightの開発を行っております。

Silverlight側より、サービス参照にてADO.NET Data Serviceを追加しまして
データの取得ができるところまでは確認しております。


そこで次に日付でデータを抽出できないかを以下の構文を作成しましたところ、エラーが発生してしまいました。


■開発環境
Visutal Studio 2008 SP1
SQL Server 2008 Developer
Windows Vista Bussiness


■テストプログラム 
-----------------------------------------------------------------
public Page()
{
InitializeComponent();

NorthwindEntities ctx =
new NorthwindEntities(new Uri("Northwind.svc",UriKind.Relative));


var qry = from p in ctx.Orders
orderby p.OrderDate
where p.OrderDate < DateTime.Now
select p;

DataServiceQuery<Orders> productQuery =
(DataServiceQuery<Orders>)qry;

productQuery.BeginExecute(new
AsyncCallback(OnLoadComplete), productQuery);
}

// 結果を取得する
private void OnLoadComplete(IAsyncResult asyncResult)
{
DataServiceQuery<Orders> query = (DataServiceQuery<Orders>)asyncResult.AsyncState;

// ここでエラーになる
IEnumerable<Orders> orders = query.EndExecute(asyncResult);
}
-----------------------------------------------------------------
■エラー内容(Inner Exception)

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
<code></code>
<message xml:lang="ja-JP">認識されない 'Edm.DateTime' リテラル 'datetime'2009-03-28T01:55:41.488 09:00'' が '13' にあります。</message>
</error>


■解析したこと
□WebServiceに投げるURLは以下の内容でした。

{http://localhost:56432/Northwind.svc/Orders()? $orderby=OrderDate&$filter=OrderDate lt datetime'2009-03-28T02:06:33.495+09:00'}


□qry作成に以下のように修正しましたら意図したデータではありませんが取得はできました。
      var qry = from p in ctx.Orders
orderby p.OrderDate
where p.OrderDate != null
&& ((DateTime)p.OrderDate).Year < dt.Date.Year
select p;

■推測される原因
エラー内容にありますが
   datetime'2009-03-28T01:55:41.488 09:00'の文字'T'が悪さをしているのではないかと考えております。

が、どのように回避すればよいのかがわかりません。
 (もしかしましたら全然別の原因かもしれませんが)


 もし解決手法を知っておられる方がございましたらご教授願えないでしょうか。


以上、よろしくお願いいたします。 

1

スキルアップ/キャリアアップ(JOB@IT)