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();
}
是'entry.Entity'空嗎? – msmucker0527
不是不是。相關的不是,我的班級客戶比我在這裏提供的例子大得多。當我用這個簡化版本試用我的測試時,我得到了預期的結果。在重構我如何使用DataContractSerializer之後。 – Michael