0

バッキングデータベースには、varbinary(max)型のデータフィールドがあります。Breezeを使用すると、このフィールドにデータを保存できますが、コールバックするときにエラーが発生します。生成されたモデルでは、フィールドはbyte[]にマップされます。しかし、Breezeがそれを文字列にシリアル化しようとすると、エラーが発生します。

$id: "1",
$type: "System.Web.Http.HttpError, System.Web.Http",
Message: "An error has occurred.",
ExceptionMessage: "The specified cast from a materialized 'System.String' type to the 'System.Byte[]' type is not valid.",
ExceptionType: "System.InvalidOperationException",
StackTrace: " at System.Data.Common.Internal.Materialization.Shaper.ErrorHandlingValueReader`1.GetValue(DbDataReader reader, Int32 ordinal) at System.Data.Common.Internal.Materialization.Shaper.GetColumnValueWithErrorHandling[TColumn](Int32 ordinal) at lambda_method(Closure , Shaper ) at System.Data.Common.Internal.Materialization.Coordinator`1.ReadNextElement(Shaper shaper) at System.Data.Common.Internal.Materialization.Shaper`1.SimpleEnumerator.MoveNext() at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source) 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)"

どんな助けでも素晴らしいでしょう!

4

1 に答える 1

0

これを再現できませんでした。

Breeze は、サーバー側の byte[] を取得して、クライアントで文字列に変換できます。この例は、従業員エンティティが返されるたびに簡単な「DocCode」サンプルで確認できます。Employee 型には、サーバー側のデータ型が 'byte[]' の Photo プロパティがあり、これは Breeze クライアントに 'string' として返されます。

あなたが実行していると思うのは、データベース上のバイナリ BLOB を文字列プロパティに具体化しようとしているサーバー側の実体化の問題です。これは、モデル プロパティが「byte[]」ではなく「文字列」として型指定された場合に発生します。

お役に立てれば。

于 2013-01-23T01:03:12.710 に答える