0

我想序列化我的項目中的實體。我有很多他們,所以我現在開始只有一個。我的項目的目標是用實體框架創建審計線索。當我在audit.newvalue = doc.root.tostring()中斷時,根目錄爲空。我一直試圖按照每個教程或q /我找到相關的這樣做,但每次我得到空。不知道我在這裏錯過了什麼。實體不使用DataContractSerializer序列化

[DataContract(IsReference=true)] 
public class Client 
{ 
    [DataMember] 
    [Key] 
    [DatabaseGenerated(System.ComponentModel.DataAnnotations.DatabaseGeneratedOption.Identity)] 
    public int Id { get; set; } 

    [DataMember] 
    public bool Active { get; set; } 

    [DataMember] 
    [Required] 
    public string LastName { get; set; } 
    [DataMember] 
    public string MiddleName { get; set; } 
    [DataMember] 
    [Required] 
    public string FirstName { get; set; } 

    [DataMember] 
    [Required] 
    public DateTime BirthDate { get; set; } 
} 

private Audit.DBAudit AuditTrailFactory(ObjectStateEntry entry, string userName) 
    { 
     var oc = this as IObjectContextAdapter; ; 
     oc.ObjectContext.DetectChanges(); 

     Audit.DBAudit audit = new Audit.DBAudit(); 
     audit.TimeStamp = DateTime.Now; 
     audit.Entity = entry.EntitySet.Name; 
     audit.User = userName; 

     // set action type 
     switch (entry.State) 
     { 
      case System.Data.EntityState.Added: 
       audit.ActionType = ActionTypes.I.ToString(); 
       break; 
      case System.Data.EntityState.Modified: 
       audit.ActionType = ActionTypes.U.ToString(); 
       break; 
      case System.Data.EntityState.Deleted: 
       audit.ActionType = ActionTypes.D.ToString(); 
       break; 
      default: 
       audit.ActionType = "F"; // fubar 
       break; 
     } 

     DataContractSerializer serializer = new DataContractSerializer(entry.Entity.GetType()); 

     XDocument doc = new XDocument(); 
     XmlWriter writer = doc.CreateWriter(); 

     serializer.WriteObject(writer, entry.Entity); 
     audit.NewValue = doc.Root.ToString(); 

     return audit; 
    } 

    [TestMethod] 
    public void CanCreateAudit() 
    { 
     FircrestModel.Client.Client client = new FircrestModel.Client.Client 
     { 
      FirstName = "billy", 
      LastName = "jones", 
      BirthDate = new DateTime(1970, 1, 1), 
     }; 

     context.Clients.Add(client); 
     context.SaveChanges(); 
    } 
+0

是'entry.Entity'空嗎? – msmucker0527

+0

不是不是。相關的不是,我的班級客戶比我在這裏提供的例子大得多。當我用這個簡化版本試用我的測試時,我得到了預期的結果。在重構我如何使用DataContractSerializer之後。 – Michael

回答

相關問題