1

Entity Framework で WCF サービスを作成しました。

私は 2 つのテーブルを持っています: Theatres と Locality。劇場の外部キーとしての局所性。

私の方法:

public theater[] GetTheaters()
{

    using (Entities context = new Entities())
    {
        return context.theater.ToArray();

    }
}

演劇の授業で、"public virtual locality locality { get; set; }" から "virtual" キーワードを削除する必要があります。そうしないと、CommunicationException が発生します。

しかし、それを行うと、劇場のリストを取得できますが、地域は null です...

どうすれば地域を取得できますか?

ありがとう

私のモデルクラス(他のエンティティもあります):

    public partial class locality
    {
        public locality()
        {
            this.theater = new HashSet<theater>();
        }

        public int idLocality { get; set; }
        public int npa { get; set; }
        public string locality1 { get; set; }

        public  ICollection<theater> theater { get; set; }
    }


    public partial class theater
    {
        public theater()
        {
            this.session = new HashSet<session>();
        }

        public int idTheater { get; set; }
        public string name { get; set; }
        public string address { get; set; }
        public int idLocality { get; set; }
        public double latitude { get; set; }
        public double longitude { get; set; }
        public int seats { get; set; }
        public string phone { get; set; }
        public string email { get; set; }
        public bool threeD { get; set; }

        public  locality locality { get; set; }
        public  ICollection<session> session { get; set; }
    }

これが私が得るエラーです:

「タイプ 'locality' のオブジェクト グラフにはサイクルが含まれており、参照追跡が無効になっている場合はシリアル化できません。

編集 :

私が見つけた解決策:

私の地方クラスでは、劇場のコレクションがありました。

次のように「プライベートをセッターに追加する必要がありました:

"パブリック ICollection シアター { get; プライベート セット; }"

動作しますが、まだ問題があります。地域エンティティから劇場にアクセスできなくなりました。(もはや双方向ではない)

4

3 に答える 3

0

リレーションシップを作成するための正しい注釈がありません。以下のコードを参照してください。(または、FluentAPI を使用している場合は自分で関係を作成します)

[Key][ForeignKey]注釈、およびvirtualキーワードを探します。

public partial class locality
    {
        public locality()
        {
            //this.theater = new HashSet<theater>();
        }

        [Key]
        public int idLocality { get; set; }

        public int npa { get; set; }
        public string locality1 { get; set; }

        public virtual ICollection<theater> theaters { get; set; }
    }


    public partial class theater
    {
        public theater()
        {
            //this.session = new HashSet<session>();
        }

        [Key]
        public int idTheater { get; set; }

        public string name { get; set; }
        public string address { get; set; }
        public int idLocality { get; set; }
        public double latitude { get; set; }
        public double longitude { get; set; }
        public int seats { get; set; }
        public string phone { get; set; }
        public string email { get; set; }
        public bool threeD { get; set; }

        [ForeignKey("idLocality")]
        public virtual locality locality { get; set; }
        //public ICollection<session> session { get; set; }
    }
于 2013-06-19T20:49:54.257 に答える