我有一个使用EF,MVC和Web API的项目。当我们第一次创建模型时,列表是虚拟的,用于启用延迟加载。这给出了错误The 'ObjectContent1' type failed to serialize the response body for content type 'application/xml; charset=utf-8'.
,因此我们决定删除延迟加载。
现在,当我们通过Web API获取对象时,我们会获得<DossiersAlsMedebeheerder i:nil="true"/>
之类的标签。它声明对象是null
,但我们想要加载更多数据,至少是列表中对象的ID。
我们有没有办法在不使用延迟加载的情况下执行此操作?我们是C#的新手,但需要这个项目,我们必须在Web API和Android应用程序之间进行通信。
型号:
public class Gebruiker
{
[Key]
public int GebruikerID { get; set; }
[Required]
public string Voornaam { get; set; }
[Required]
public string Familienaam { get; set; }
[Required]
[EmailAddress]
[Display(Name = "Email")]
public string MailAdres { get; set; }
[Required]
[StringLength(100, ErrorMessage = "Het {0} moet minstens {2} tekens lang zijn.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "Wachtwoord")]
public string Wachtwoord { get; set; }
[DataType(DataType.Password)]
[Display(Name = "Bevestig Wachtwoord")]
[Compare("Wachtwoord", ErrorMessage = "Het wachtwoord en de bevestiging komen niet overeen.")]
public string BevestigWachtwoord { get; set; }
public GebruikerStatus GebruikerStatus { get; set; }
public Gebruikerstype Gebruikerstype { get; set; }
[Display(Name = "Geboorte Datum")]
//[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
public DateTime GeboorteDatum { get; set; }
[Required]
public int Postcode { get; set; }
[Required]
public string Gemeente { get; set; }
[Required]
public string Gebruikersnaam { get; set; }
public DateTime LaatstGezien { get; set; }
public List<Module> ModulesAlsExpert { get; set; }
public List<Antwoord> Antwoorden { get; set; }
public List<Dossier> DossiersAlsMedebeheerder { get; set; }
public List<Like> Likes { get; set; }
}
XML(输出):
<ArrayOfGebruiker>
<Gebruiker>
<Antwoorden i:nil="true"/>
<BevestigWachtwoord>test123</BevestigWachtwoord>
<DossiersAlsMedebeheerder i:nil="true"/>
<Familienaam>VG</Familienaam>
<GeboorteDatum>1993-04-10T00:00:00</GeboorteDatum>
<GebruikerID>1</GebruikerID>
<GebruikerStatus>Toegelaten</GebruikerStatus>
<Gebruikersnaam>Laurens</Gebruikersnaam>
<Gebruikerstype>Expert</Gebruikerstype>
<Gemeente>Leuven</Gemeente>
<LaatstGezien>2009-04-10T00:00:00</LaatstGezien>
<Likes i:nil="true"/>
<MailAdres>Laurens.vg@gmail.com</MailAdres>
<ModulesAlsExpert i:nil="true"/>
<Postcode>8000</Postcode>
<Voornaam>Laurens</Voornaam>
<Wachtwoord>test123</Wachtwoord>
</Gebruiker>
</ArrayOfGebruiker>
答案 0 :(得分:0)
看看这是否有帮助
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
namespace ConsoleApplication19
{
class Program
{
const string FILENAME = @"c:\temp\Test.xml";
static void Main(string[] args)
{
ArrayOfGebruiker arrayOfGebruiker = new ArrayOfGebruiker(){
Gebruiker = new List<Gebruiker>(){
new Gebruiker {
antwoorden = new I() { nil = true},
bevestigWachtwoord = "test123",
dossiersAlsMedebeheerder = new I(){ nil =true},
familienaam = "VG",
geboorteDatum = DateTime.Parse("1993-04-10T00:00:00"),
gebruikerID = 1,
gebruikerStatus = "Toegelaten",
gebruikersnaam = "Laurens",
gebruikerstype = "Expert",
gemeente = "Leuven",
LaatstGezien = DateTime.Parse("2009-04-10T00:00:00"),
likes = new I(){ nil = true},
mailAdres = "Laurens.vg@gmail.com",
modulesAlsExpert = new I(){nil = true},
postcode = 8000,
voornaam = "Laurens",
wachtwoord = "test123"
}
}
};
XmlSerializer serializer = new XmlSerializer(typeof(ArrayOfGebruiker));
StreamWriter writer = new StreamWriter(FILENAME);
XmlSerializerNamespaces _ns = new XmlSerializerNamespaces();
//_ns.Add("", "");
//serializer.Serialize(writer, icp, _ns);
serializer.Serialize(writer, arrayOfGebruiker);
writer.Flush();
writer.Close();
writer.Dispose();
XmlSerializer xs = new XmlSerializer(typeof(ArrayOfGebruiker));
XmlTextReader reader = new XmlTextReader(FILENAME);
ArrayOfGebruiker newArrayOfGebruiker = (ArrayOfGebruiker)xs.Deserialize(reader);
}
}
[XmlRoot("ArrayOfGebruiker")]
public class ArrayOfGebruiker
{
[XmlElement("Gebruiker")]
public List<Gebruiker> Gebruiker {get;set;}
}
[XmlRoot("Gebruiker")]
public class Gebruiker
{
[XmlElement("Antwoorden")]
public I antwoorden {get;set;}
[XmlElement("BevestigWachtwoord")]
public string bevestigWachtwoord {get;set;}
[XmlElement("DossiersAlsMedebeheerder")]
public I dossiersAlsMedebeheerder {get;set;}
[XmlElement("Familienaam")]
public string familienaam {get;set;}
[XmlElement("GeboorteDatum")]
public DateTime geboorteDatum {get;set;}
[XmlElement("GebruikerID")]
public int gebruikerID {get;set;}
[XmlElement("GebruikerStatus")]
public string gebruikerStatus {get;set;}
[XmlElement("Gebruikersnaam")]
public string gebruikersnaam {get;set;}
[XmlElement("Gebruikerstype")]
public string gebruikerstype {get;set;}
[XmlElement("Gemeente")]
public string gemeente {get;set;}
[XmlElement("LaatstGezien")]
public DateTime LaatstGezien {get;set;}
[XmlElement("Likes")]
public I likes {get;set;}
[XmlElement("MailAdres")]
public string mailAdres {get;set;}
[XmlElement("ModulesAlsExpert")]
public I modulesAlsExpert {get;set;}
[XmlElement("Postcode")]
public int postcode {get;set;}
[XmlElement("Voornaam")]
public string voornaam {get;set;}
[XmlElement("Wachtwoord")]
public string wachtwoord {get;set;}
}
public class I
{
[XmlAttribute(AttributeName = "nil")]
public bool nil {get;set;}
}
&#13;