4

私が得ているエラーは、Structs.tt ファイルから出ているようです。私は Northwind データベースを使用しており、Products テーブルのみを使用しています (他のテーブルはすべて除外しました)。Json(Product.All()) を返します。

エラーは次のとおりです。

「SubSonic.Schema.DatabaseColumn」タイプのオブジェクトをシリアル化中に循環参照が検出されました。スタック トレースは次のとおりです。

System.InvalidOperationException はユーザー コードによって処理されませんでした Source="System.Web.Extensions" StackTrace: System.Web.Script.Serialization.JavaScriptSerializer.SerializeValueInternal (Object o, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat serializationFormat) で System.Web.Script.Serialization.JavaScriptSerializer. SerializeValue(Object o, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat serializationFormat) at System.Web.Script.Serialization.JavaScriptSerializer.SerializeCustomObject(Object o, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat serializationFormat) at System.Web.脚本。

4

2 に答える 2

16

これはかなり簡単に修正できます。ActiveRecord.tt ファイルのいくつかのメソッドに ScriptIgnore 属性を追加するだけです。以下は、私が行った変更です。

        [ScriptIgnore]
    public IList<IColumn> Columns{
        get{
            return tbl.Columns;
        }
    }

注:状況で必要かどうかはわかりませんが、次のメソッドにも属性を追加しました

        [ScriptIgnore]
    public IQueryable<<#=fk.OtherClass #>> <#=propName #>
    {
        get
        {

              var repo=<#=Namespace #>.<#=fk.OtherClass#>.GetRepo();
              return from items in repo.GetAll()
                   where items.<#=CleanUp(fk.OtherColumn)#> == _<#=CleanUp(fk.ThisColumn)#>
                   select items;
        }
    }
于 2009-09-16T15:05:02.510 に答える
5

シリアル化に問題があるようです:)。これを問題としてリストに追加していただけますか? 本当にありがたいです。

于 2009-07-28T16:55:48.893 に答える