2

WCF サービスから何かを保存したいときにこのエラーが発生するという非常に奇妙なエラーがあります。保存するオブジェクトには無効な日時が含まれていません。保存する前にすべてチェックします。このエラーが表示されると、データベースがハングすることがあり、WCF が障害のある状態になっています。DB と、WCF がホストされている IIS Web アプリを再起動して、もう一度保存しようとすると。それは動作します..私たちは無知なので、アドバイスがあれば共有してください

以下はエラーです:

2010-03-05 10:21:34,311 [5] エラー ProjectX.Business.TTExceptionLogger - ReceiveResultsForMobile() のどこかで例外: {0} Castle.Services.Transaction.CommitResourceException: トランザクションをコミットできませんでした。リソースが失敗しました ---> System.Data.SqlTypes.SqlTypeException: SqlDateTime オーバーフロー。1753 年 1 月 1 日 12:00:00 AM から 9999 年 12 月 31 日 11:59:59 PM の間である必要があります。System.Data.SqlTypes.SqlDateTime.FromTimeSpan(TimeSpan 値) で System.Data.SqlTypes.SqlDateTime.FromDateTime(DateTime 値) で System.Data.SqlClient.MetaType.FromDateTime(DateTime dateTime、Byte cb) で System.Data。 System.Data.SqlClient.TdsParser.TdsExecuteRPC(_SqlRPC[] rpcArray、Int32 タイムアウト、1 receiveLines, String warehouseCode, String username, String deviceNumber, Boolean removeOldReceiveLines) in D:\Project Docs\Clients\ClientX 09.08\Projects\ProjectX\ProjectX.WcfInterfaceService\MobileServices.svc.cs:line 567 at WcfInterfaceService.MobileServices.ProcessReceiveResults(ListD:\Project Docs\Clients\ClientX 09.08\Projects\ProjectX\ProjectX.WcfInterfaceService\MobileServices.svc.cs:line 770 の WcfInterfaceService.MobileServices.ProcessResultsFromMobile(String receiveResult, D:\Project Docs\Clients\ClientX 09.08\Projects\ProjectX\ProjectX.WcfInterfaceService\MobileServices.svc.cs:line 668 の文字列 WarehouseCode、文字列 username、文字列 deviceNumber)

4

2 に答える 2

4

SQL Server 2008 を実行していますか? 今日、SQL Server 2008 を使用しているときに、この同じエラーが発生しました。データベースでは、時刻の部分は気にしないため、列を「datetime」ではなく「date」に設定しました。しかし、.NET には「日付」データ型がないため、datetime を使用します。

私にとっては、デフォルトで 1/1/0001 12:00:00 AM のような null 日時値を渡していました。時間部分が含まれていたため、表示されているのと同じエラーが発生していました。

私にとっては、datetime 値を null 可能にする必要があり、日付データ型をサポートする NHibernate の MsSql2008Dialect も使用する必要がありました。NHibernate と SQL Server 2008 の詳細については、こちら を参照してください。

データベースのデータ型が正しく設定されていること、および SQL Server 2008 を使用している場合は MsSql2008Dialect を使用していることを確認します。

于 2010-03-05T19:59:08.963 に答える
1

お答えする前に、2 つの質問があります。

  1. どのようなデータベースを使用していますか?
  2. 例外の原因となっている日付は何ですか?

推測: コードで使用するよりも日時の範囲または精度が小さいデータベースを使用しています。その場合、例外は NHibernate によるものではなく、データベースの機能によるものです。これはバグではなく機能です。

于 2010-03-05T20:35:03.170 に答える