は、これは私がシリアル化しようとするオブジェクトです:シリアライズEntityオブジェクト
public class EmailAttachment
{
public int ID { get; set; }
public string Filepath { get; set; }
public string Filename { get; set; }
public int EmailID { get; set; }
[IgnoreDataMember]
public virtual ReceivedEmail Email { get; set; }
}
をそして、これは私のシリアル化コードです:
var attachments = unitOfWork.EmailAttachmentRepository.Get(e => e.EmailID == emailID);
return Json(attachments, JsonRequestBehavior.AllowGet);
問題は、私が[IgnoreDataMember]
属性、EmailAttachment
のEmail
プロパティを置くものの、まだシリアル化されています。アタッチメントが最初にフェッチされると、コンソールでエンティティログが表示されます。Email
の遅延読み込みが有効になっているため、return Json(attachments, JsonRequestBehavior.AllowGet);
が実行された場合、リスト内のすべての添付ファイルに対してがデータベースからフェッチされ、Email
。
どうすればいいですか?私はその仮想プロパティなしでEmailAttachment
だけを望む...
おかげで、私も設定でこれをやりました.ProxyCreationEnabled = false、その2つの違いは何ですか? – Aleksa
@Aleksaプロキシは、自動的に変更を検出し、関係を修正し、lazyloadingを有効にするために使用されます。読み取り専用の目的(必要な場合など)で必要な場合は、プロキシを無効にするためにパフォーマンスが向上する可能性があります。しかし、遅延トラッキング(トラッキングを変更しない)だけを無効にしたい場合は、プロキシを残す必要があります。 –