[seasar-dotnet:1017] Re: DBFlute &S2Dxoによるデータ詰め替えについて

Nakai [E-MAIL ADDRESS DELETED]
2008年 10月 20日 (月) 18:29:19 JST


久保さん

お世話になっております。

例外が発生する場所ですが、以下の間違いでした。
申し訳ありません。

殆どのメンバーが、
「現在のスレッドがスタック オーバーフロー状態であるため、式を評価できません。」
で内容があまり分からないのですが、
「source」変数の
propertyName = "Employeeid"
でした。
(SQLServerのNorthwindDBのEmployeesテーブルのPKカラムです)

もう少し詳細な情報が取れるよういろいろ試してみます。


------------------------------------------------
destInfo = destType.GetProperty(targetPropertyName);
if (destInfo != null && destInfo.CanRead && destInfo.CanWrite)
{
    _ConvertProperty(sourceInfo, source, dest, destInfo, existProperty);
}
    // 異なる場合、再帰で調査する


↓↓↓↓↓↓↓↓↓↓以下コメントアウトで正常動作↓↓↓↓↓↓↓↓↓
/*
else
{
↓↓↓↓↓↓↓↓↓↓ここでException発生↓↓↓↓↓↓↓↓↓
    object srcValue = sourceInfo.GetValue(source, null);
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
    if (srcValue != null)
    {
        // 変換元を調査する
        if (srcValue.GetType().Namespace != "System")
        {
            AssignTo(srcValue, dest);
        }
            // 変換先を調査する
        else
        {
            PropertyInfo[] properties = destType.GetProperties();
            foreach (PropertyInfo property in properties)
            {
                object destValue = property.GetValue(dest, null);
                if (destValue != null && destValue.GetType().BaseType != typeof (ValueType) &&
                    destValue.GetType().Namespace != "System")
                    AssignTo(source, destValue);
            }
        }
    }
}
*/

kubo <[E-MAIL ADDRESS DELETED]> wrote:

> 久保(jflute)です。
> 
> 中井さん、こんばんは
> 
> 早速確認させて下さい。
> コメントアウトされた部分で、実際例外が発生する直前
> の処理における「destType」と「srcValue」は何になるか
> 教えて頂けますでしょうか?
> 
> 
> #
> # S2Dxo詳しいコミッタの方気づいた時に「Help」お願いします
> #
> 
> 2008/10/20 中井 雅文 <[E-MAIL ADDRESS DELETED]>:
> > お世話になります。中井と申します。
> >
> > 現在、Quill、DBFlute、S2Dxoでアプリケーションを作成しております。
> >
> > DBFluteで自動生成したEntityをカスタムDtoに移送しようとS2Dxoを使ったのですが、
> > 以下のExceptionが発生してしまいました。
> > (移送元が試しに作ったカスタムEntityであれば問題ありません)
> >
> > 【発生場所】
> > Seasar.Dxo.Interceptor.DxoInterceptor._TryExchangeSameNameProperty
> >
> > 【例外内容】
> > 'System.StackOverflowException' のハンドルされていない例外が mscorlib.dll で発生しました。
> >
> >
> > S2Dxoのソースを見て、下記部分をコメントアウトすると、データの移し替えも正しく行われたのですが、何か他に影響が出ますでしょうか?
> >
> > お忙しいところ申し訳ありませんが、よろしくお願い致します。
> >
> >
> > -----------------------------------------------------
> >
> > destInfo = destType.GetProperty(targetPropertyName);
> > if (destInfo != null && destInfo.CanRead && destInfo.CanWrite)
> > {
> >    _ConvertProperty(sourceInfo, source, dest, destInfo, existProperty);
> > }
> >    // 異なる場合、再帰で調査する
> >
> >
> > ↓↓↓↓↓↓↓↓↓↓以下コメントアウトで正常動作↓↓↓↓↓↓↓↓↓
> > /*
> > else
> > {
> >    object srcValue = sourceInfo.GetValue(source, null);
> >    if (srcValue != null)
> >    {
> >        // 変換元を調査する
> >        if (srcValue.GetType().Namespace != "System")
> >        {
> >            AssignTo(srcValue, dest);
> >        }
> >            // 変換先を調査する
> >        else
> >        {
> >                        ↓↓↓↓↓↓↓↓↓↓ここでException発生↓↓↓↓↓↓↓↓↓
> >            PropertyInfo[] properties = destType.GetProperties();
> >                        ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
> >            foreach (PropertyInfo property in properties)
> >            {
> >                object destValue = property.GetValue(dest, null);
> >                if (destValue != null && destValue.GetType().BaseType != typeof (ValueType) &&
> >                    destValue.GetType().Namespace != "System")
> >                    AssignTo(source, destValue);
> >            }
> >        }
> >    }
> > }
> > */
> >
> >
> > _______________________________________________
> > seasar-dotnet mailing list
> > [E-MAIL ADDRESS DELETED]
> > https://ml.seasar.org/mailman/listinfo/seasar-dotnet
> >
> _______________________________________________
> seasar-dotnet mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet



seasar-dotnet メーリングリストの案内