에서 나는이 개 수업이 : 내부 나는이 방법을 사용하고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
:
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);
:
public virtual DbSet<A> A { get; set; }
public IQueryable<A> GetA()
{
return A;
}
가 지금은 XML로 데이터를 내보낼
그리고 오류가 발생합니다 :
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