Dies ist das Objekt, das ich versuche zu serialisieren:Serialisieren Entity Objekt
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; }
}
Und das ist mein Serialisierungscode:
var attachments = unitOfWork.EmailAttachmentRepository.Get(e => e.EmailID == emailID);
return Json(attachments, JsonRequestBehavior.AllowGet);
Das Problem ist, dass, obwohl ich setzte [IgnoreDataMember]
Attribut, Email
Eigenschaft EmailAttachment
ist noch serialisiert. Ich kann Entity-Protokoll in der Konsole anzeigen, wenn Anhänge zuerst abgerufen werden, gibt es keinen Abruf von Email
, weil Lazy Loading aktiviert ist, aber wenn return Json(attachments, JsonRequestBehavior.AllowGet);
ausgeführt wird, dann für jede Anlage in Liste Email
aus der Datenbank abgerufen wird, und dies wird auf Eigenschaften von Email
propagiert .
Wie kann ich das stoppen? Ich möchte nur EmailAttachment
ohne seine virtuellen Eigenschaften ...
Danke, ich habe auch diese mit Konfigurations .ProxyCreationEnabled = false, weißt du, was der Unterschied zwischen diesen beiden ist? – Aleksa
@Aleksa Proxys werden verwendet, um Änderungen automatisch zu erkennen, Beziehungen zu beheben und Lazyloading zu aktivieren. Wenn Sie sie nur für Lesezwecke benötigen (wie Sie es tun), könnte dies eine Leistungssteigerung zur Folge haben, um Proxies auszuschalten. Wenn Sie jedoch nur das verzögerte Laden deaktivieren möchten (nicht die Verfolgung ändern), sollten Sie die Proxys eingeschaltet lassen. –