DateTimeOffset列の述語を使用してエンティティにクエリを実行しようとしていますが、Breeze.WebApiから500エラー応答が返されます。エラーメッセージは
Unable to perform operation: leon types:System.Nullable`1[System.DateTimeOffset], System.DateTime
私が見たウリは次のようなものです
http://localhost:49800/api/Breeze Orders?$filter=LocalDateTime%20le%20datetime'2013-03-03T00%3A00%3A00.000Z'
何が機能しているのか:
- 他のDateTime、テキスト列でクエリできます
- 'LocalDateTime'フィールドに新しいデータを保存できます
クエリからの完全なエラー応答は次のとおりです。
<Error>
<Message>An error has occurred.</Message>
<ExceptionMessage>
Unable to perform operation: leon types:System.Nullable`1[System.DateTimeOffset], System.DateTime
</ExceptionMessage>
<ExceptionType>System.Exception</ExceptionType>
<StackTrace>
at Breeze.WebApi.ParseTreeVisitor.CoerceTypes(String operatorName, Expression& leftExpr, Expression& rightExpr) at Breeze.WebApi.ParseTreeVisitor.VisitBinary(ParseTreeNode node, String operatorName, Expression leftExpr, Expression rightExpr) at Breeze.WebApi.ParseTreeVisitor.VisitNode(ParseTreeNode node) at Breeze.WebApi.ParseTreeVisitor.Parse(Type rootType, ParseTreeNode node) at Breeze.WebApi.ExpressionTreeBuilder.Parse(Type rootType, String source) at Breeze.WebApi.ODataActionFilter.BuildFilterFunc(String filterQueryString, Type elementType) at Breeze.WebApi.ODataActionFilter.OnActionExecuted(HttpActionExecutedContext actionExecutedContext) at System.Web.Http.Filters.ActionFilterAttribute.CallOnActionExecuted(HttpActionContext actionContext, HttpResponseMessage response, Exception exception) at System.Web.Http.Filters.ActionFilterAttribute.<>c__DisplayClass2.<System.Web.Http.Filters.IActionFilter.ExecuteActionFilterAsync>b__0(HttpResponseMessage response) at System.Threading.Tasks.TaskHelpersExtensions.<>c__DisplayClass41`2.<Then>b__40(Task`1 t) at System.Threading.Tasks.TaskHelpersExtensions.ThenImpl[TTask,TOuterResult](TTask task, Func`2 continuation, CancellationToken cancellationToken, Boolean runSynchronously)
</StackTrace>
</Error>
。
編集
そこに着きますが、完全ではありません。Breeze 1.2.8をインストールした後、クライアントは正しく入力されたuriを生成しています。
http://localhost:49800/api/Breeze/Orders?$filter=LocalDateTime%20ge%20datetimeoffset'2013-01-01T11%3A00%3A00.000Z'
私の場合、setEntityTypeForResourceNameを使用してエンティティタイプを修正する必要はありません。上記のuriはまだ私にエラーを与えます:
Unable to perform operation: leon types:System.Nullable`1[System.DateTimeOffset], System.DateTimeOffset
サーバー側モデルをから変更する
public Nullable<System.DateTimeOffset> LocalDateTime { get; set; }
に
public System.DateTimeOffset LocalDateTime { get; set; }
私のURIが機能することを許可します。では、null許容のDateTimeOffsetを修正していただけませんか。