0

複雑なオブジェクト ツリーを SQL Server データベースに保存しています。このエラー メッセージが表示されるため、オブジェクト ツリーのフィールドの 1 つがnullか面白い日付である必要があります。

「SqlDateTime オーバーフロー。1753 年 1 月 1 日午前 12:00:00 から 9999 年 12 月 31 日午後 11:59:59 の間である必要があります。」

Visual Studio のインスペクターを使用して、危険なフィールドが見つかるまでドリルダウンすることで見つけることができますが、これには非常に時間がかかります。また、優れたロギング エラー メッセージが表示されることもありません。

エラーメッセージで問題のあるフィールド名を返すように nhibernate を取得する方法はありますか?

派手なことをしているわけではなく、

public TEntity Save(TEntity entity)
    {
        return Save(entity, false);
    }

注:設定に流暢なnhibernateを使用しています

4

2 に答える 2

0

SQL Server について話すことはできませんが、SQLite では、問題のあるフィールドの名前が表示されることがよくありますが、例外メッセージまたは内部例外に深く埋もれているため、見逃すのは非常に簡単です。

単純に例外の ToString() メソッドを呼び出すと、すべての内部例外を含むすべてのメッセージ テキストを含む単一の文字列が作成され、それがメッセージ ボックスに表示されます。

または、イミディエイト ウィンドウに次のように入力します。

Debug.Print( ex.ToString() )

一気に見られると、必要なものがどこかに埋もれているかもしれません。

于 2013-04-04T15:23:43.547 に答える