簡體   English   中英

從同一個object結構生成同一張表中的多行

[英]Generating multiple rows in the same table from the same object structure

簡而言之,我正在嘗試獲取 XML 數據並將其存儲在表中。 目前給我帶來問題的結構如下所示:

<Event>
  <PhaseOne>...</PhaseOne>
  <PhaseTwo>...</PhaseTwo>
  <PhaseThree>...</PhaseThree>
  <EventID>12345</EventID>
  <EventDate>09/09/09</EventDate>
</Event>

最終結果是我的 Event 表中的 3 行(每個<Phase>行)。 每行不僅需要各自<Phase>元素內的數據,還需要父級值,例如<EventID>

我有XSD.exe生成的類來反序列化 XML,但我不知道如何配置我的 EF 代碼優先映射以生成正確的結果。

我以為我會簡單地將 map 每個<Phase> class 放到同一張表中,但是我不確定如何將 map 到該行中的父級別值( <EventID> )列中。

不幸的是,我無法更改 XML 或表模式。

您顯然需要將反序列化類型和持久化類型分開 - 它們不能相同,因為您的持久化類型需要與反序列化類型不同的結構。 您將無法為反序列化類型設置映射,因為 EF 不支持您想要的。 您的選擇是:

  • 為持久性創建單獨的類型並從反序列化類型中填充它們
  • 不要使用反序列化(或自己編寫),而是使用XmlDocumentXmlReaderXElement手動處理 XML 。 直接從讀取 XML 填充您的持久類型
  • 不要使用 EF 並將反序列化類型與存儲過程一起保存

我的解決方案

我將EventIDEventDate成員的副本添加到每個Phase class ,然后在反序列化后手動填充它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM