2013-05-03 1 views
0

Я создаю и представляю XML-файл и Entity. После многих часов это, кажется, работает, но есть ли лучший способ?Entity to XML (EF5.0)

var entityContents = (from p in context.people select p).ToListAsEnumerable(); 
var XmlString = CollectMemebersNameValue("people" , entityContents); 

public static string CollectMemebersNameValue(string entityName, IEnumerable entityQuery) 
    { 
     var xmlText = new StringBuilder(); 
     xmlText.AppendLine("<" + entityName + ">"); 
     foreach (var item in entityQuery) 
     { 
      xmlText.AppendLine("<Row>"); 
      foreach (var prop in item.GetType().GetProperties()) 
      { 
       if (! prop.PropertyType.Name.Contains("ICollection")) 
       { 
        var nname = prop.Name; 
        var nvalue = prop.GetValue(item, null); 
        xmlText.AppendLine("<" + nname + ">" + nvalue + "</" + nname + ">"); 
       } 

      } 
     } 
     xmlText.AppendLine("</" + entityName + ">"); 
     return xmlText.ToString(); 
    } 
+1

Использовать XML-сериализатор? – zimdanen

ответ

2

Да, вы можете использовать XmlSerializer, например.

XmlSerializer xs = new XmlSerializer(typeof(YourObjectType)); 
MemoryStream ms = new MemoryStream(); 
xs.Serialize(ms, yourActualObject); 
string sampleXml = Encoding.UTF8.GetString(ms.ToArray()); 

Независимо от того, выполняете ли вы сериализацию своей сущности или вид своей сущности, она работает одинаково. Просто убедитесь, что любой объект, который вы сериализуете , является сериализуемым.

+0

Имейте в виду, что десериализация и повторная привязка объекта будут обходить запуск объекта ObjectMaterialized объекта ObjectContext. Вы также получите проблемы с прокси-объектами, если вы включили их. – qujck