私は2クラスありますEntity FrameworkのからC#のXmlSerializer
[XmlInclude(typeof(Item))]
public class A
{
public int Id { get; set; }
[XmlArray("Items")]
[XmlArrayItem("Item")]
public virtual List<Item> Items { get; set; } = new List<Item>();
}
public class Item
{
public int Id { get; set; }
[XmlIgnore]
public virtual A a { get; set; }
}
を、私は私のDbContext
内でこのメソッドを使用しています:
public virtual DbSet<A> A { get; set; }
public IQueryable<A> GetA()
{
return A;
}
は今、私はXMLにデータをエクスポートする:
Type[] types = { typeof(Item) };
var aElements = GetA().ToList();
System.Xml.Serialization.XmlSerializer writer =
new System.Xml.Serialization.XmlSerializer(aElements.GetType(), types);
writer.Serialize(file, aElements);
そして、それはエラーを投げます:
InvalidOperationException: The type System.Data.Entity.DynamicProxies.A_08D7BCCB892E27DE8C32342A0E8F0F2B2D3B9E2DAC9F6A16 was not expected. Use the XmlInclude or SoapInclude attribute to specify types that are not known statically.
どういうところが間違っていますか?私は同様のトピックを検索しようとしましたが、それらのソリューションは私のためには機能しません。
編集:期待される結果:
<A>
<Id>1</Id>
<Items>
<Item><Id>20</Id></Item>
</Items>
</A>
<A>
..
</A>
いいね。間違いはありません。あなたが提供していない別の詳細はありますか? – lucky
これはほとんどすべてのものですが、これらのクラスには属性がありますが、プリミティブ型の – dontHaveName