【发布时间】:2012-12-19 19:57:03
【问题描述】:
EntityFramework 为 xml 字段返回不完整的数据。 我序列化数据并将其保存在数据库中的 xml 字段中。缺少的数据在 xml 中的 Images 节点值也被序列化了一个序列化的对象。值的编码发生在我序列化字段对象时。
图像 -> 值字段中缺少的数据在哪里?为什么它消失了?
这是我的 ms sql xml 字段中的内容:
<ArrayOfField xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Field>
<Key>Images</Key>
<Value><ArrayOfImage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Image>
<Name>Penguins.jpg</Name>
<Path>~/Fileshare/Pages/6/Penguins.jpg</Path>
<AltText>Test</AltText>
</Image>
<Image>
<Name>Tulips.jpg</Name>
<Path>~/Fileshare/Pages/6/Tulips.jpg</Path>
<AltText>Test</AltText>
</Image>
</ArrayOfImage></Value>
</Field>
<Field>
<Key>Test</Key>
<Value>Test</Value>
</Field>
<Field>
<Key>MyEditor</Key>
<Value />
</Field>
</ArrayOfField>
这是 EF 返回的内容:
<ArrayOfField xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><Field><Key>Images</Key><Value><ArrayOfImage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" /></Value></Field><Field><Key>Test</Key><Value>Test</Value></Field><Field><Key>MyEditor</Key><Value /></Field></ArrayOfField>
我像这样从 EntityFramework 获取数据:
public Item Get(int id)
{
using (var context = new Entities())
{
var item = context.Items.SingleOrDefault(x => x.ID == id);
return item;
}
}
【问题讨论】:
-
谢谢!这解决了我的问题.....
-
您确定您正在查看 SQL 和 EF 查询中具有相同 id 的项目吗?因为您提供的示例似乎是一个格式化的 xml,但只有一个空的 arrayOfImage,没有子级。所以它不像 EF 正在修剪 xml 内部文本或其他东西。
-
@dutzu 是的,我很确定。我的其他项目都不包含图像节点。
-
您有什么有用的答案吗?然后接受它。您的问题将被标记为已回答,并且不再列在未回答问题列表中。
-
@espvar 如果您有答案,请将此问题标记为已回答。
标签: c# sql-server xml entity-framework serialization