私はこのようにモデルを持っています:
ユーザー=>プロファイル=>モジュール=>治療
(ユーザーにはプロファイルがあり、プロファイルには多くのモジュールがあり、モジュールには多くの処理があります)
このモデルは、最初にエンティティフレームワークコードによってリバースエンジニアリングされます
これを単純なasmxファイルで使用してユーザーを要求すると、次のエラーが発生します。
A circular reference was detected while serializing an object of type 'CDU.Entities.Models.User'.
これは、プロファイルエンティティがpofileを持っているユーザーのリストを制限しているためです...など。
私のデータコンテキストでは、遅延読み込みを無効にしました。認証はOKのようです。取得したユーザーのプロファイルには、プロファイルIDがありますが、プロファイルエンティティが読み込まれていません。
this.Configuration.LazyLoadingEnabled = false;
素晴らしい!
認証されたら、彼のプロファイルのモジュールと処理に基づいて、ユーザーメニューを作成する必要があります。
だから私はオブジェクトにプロファイルをロードするように頼んだ:
User user = new User();
using (cduContext db = new cduContext())
{
string encryptedPassword = Encryption.Encrypt(password);
user = (from u in db.Users
where u.UserName.Equals(login) &&
u.Password.Equals(encryptedPassword)
select u).FirstOrDefault();
// Including the user's Profile
user = db.Users.Include("Profile").FirstOrDefault();
}
return user;
プロファイルはロードされますが、彼のサブエンティティもロードされます。たとえば、このプロファイルのユーザーリストです。
そして、私は同じエラーを楽しんでいます:
A circular reference was detected while serializing an object of type 'CDU.Entities.Models.User'.
プロファイルが「遅延読み込み」である理由
これらのエンティティをオンデマンドで含める必要があります...どうすればよいですか?