2017-05-25 81 views
0

我正在创建一个DbContext,但我无法处理在我的数据库中存储XML。除解析xml以将字符串属性保存为模型还有其他方法吗?实体框架 - 如何在数据库中存储XML

我想我的新闻存储如下XML:

<News> 
    <Language value="en-GB"> 
    <Title>Example One</Title> 
    <Date>25/05/2017 12:12:12</Date> 
    <Content>Simple <b>HTML</b> content!</Content> 
    <Miniature> 
     <File ID="816c9bcc-a9fc-4390-9bdc-52c8a0ae75be"> 
     <Title>File 1</Title> 
     <Extension>JPG</Extension> 
     <Path>Server path</Path> 
     <Thumbnail>Server path to thumbnail</Thumbnail> 
     </File> 
    </Miniature> 
    <Images> 
     <File ID="bd4c6a21-243f-44cb-9456-7dd596d7ed9f"> 
     <Title>File 2</Title> 
     <Extension>JPG</Extension> 
     <Path>Server path</Path> 
     <Thumbnail>Server path to thumbnail</Thumbnail> 
     </File> 
     <File ID="50d4966c-9381-4d28-b289-8a0a8a29433b"> 
     <Title>File 3</Title> 
     <Extension>PNG</Extension> 
     <Path>Server path</Path> 
     <Thumbnail>Server path to thumbnail</Thumbnail> 
     </File> 
    </Images> 
    </Language> 
    <Language value="en-US"> 
    <Title>Example One</Title> 
    <Date>25/05/2017 12:12:12</Date> 
    <Content> 
     Simple <i>UNITED STATES</i> <b>HTML</b> content! 
    </Content> 
    <Miniature> 
     <File ID="816c9bcc-a9fc-4390-9bdc-52c8a0ae75be"> 
     <Title>File 4</Title> 
     <Extension>JPG</Extension> 
     <Path>Server path</Path> 
     <Thumbnail>Server path to thumbnail</Thumbnail> 
     </File> 
    </Miniature> 
    <Images> 
     <File ID="bd4c6a21-243f-44cb-9456-7dd596d7ed9f"> 
     <Title>File 2</Title> 
     <Extension>JPG</Extension> 
     <Path>Server path</Path> 
     <Thumbnail>Server path to thumbnail</Thumbnail> 
     </File> 
    </Images> 
    </Language> 
</News> 

而且我的文件为:

<File> 
    <Title>File 2</Title> 
    <Extension>JPG</Extension> 
    <Path>Server path</Path> 
    <Thumbnail>Server path to thumbnail</Thumbnail> 
</File> 

我可以简单地做到这一点,而这样做的CRUD操作只是解析XML字符串和保存在详细信息:

public class News 
{ 
    public Guid ID {get;set;} 
    public string Details {get;set;} 
} 

但是有没有其他方法可以做到这一点?像使用序列化属性或什么的?我怎样才能做到这一点?

在此先感谢!

+0

序列化是这样做的,它将xml对象解析为字符串。 –

+0

但是,我应该如何看待我的新闻课堂和模特? – Ashiv3r

+0

是否与您的xml dtd相同? –

回答

0

您应该改用LINQ to XML

XDocument fileXml = XDocument.Load(path); 
var files = from files in fileXml.Descendants("File") 
select new { 
    Title = file.Attribute("Title").Value, 
    Extension = file.Element("Extension").Value, 
    Path = file.Element("Path").Value, 
    Thumbnail = file.Element("Thumbnail").Value 
}; 

foreach (var file in files) 
{ 
    // Do other operations with each student object 
} 
+0

我知道如何操作XML文件,但我不想将它作为XML文件存储在我的服务器上,而是作为数据库中的XML列存储。 – Ashiv3r

+0

你是什么意思?“我不想将它作为XML文件存储在我的服务器上,而是作为数据库中的XML列”? – Fahadsk

+0

你的答案是关于从路径读取XML文件。我不想这样做,我想从数据库中读取它。在SQL中,您可以使用XML类型的列。如何将它作为XML列存储在实体框架中? – Ashiv3r