gpt4 book ai didi

c# - 如何将实体从 ASP.NET MVC 站点序列化为 XML?

转载 作者:行者123 更新时间:2023-11-30 21:20:07 25 4
gpt4 key购买 nike

我正在开发一个连接到数据库并利用 Entity Framework 的 ASP.NET MVC(在 c# 中)站点。我希望人们能够从站点修改数据库中的信息(因为在我看来,通过 ASP.NET MVC 站点显示和验证数据比桌面应用程序更容易,同时更容易分发的工具)。然后我希望用户能够将数据库(在他们做出更改之后)导出到一个 XML 文件,该文件可以由我创建的桌面应用程序加载。我想知道是否有一种简单的方法可以让代表数据库中数据的 Entity Framework 创建的类将它们的信息序列化为 XML 文件?然后我假设我能够在我的桌面应用程序中重用相同的生成代码来读取那些 XML 文件并创建对象来表示该程序中使用的数据?

以某种方式导出数据库,然后使用生成的相同代码从客户端计算机上的本地数据库读取而不是 xml 文件会更容易吗(客户端计算机可能无法访问互联网,因此数据必须存储在本地)?

你会换一种方式来解决这个问题吗?预先感谢您的所有输入!!!

最佳答案

Xml-serializer 就是您所需要的。我正在使用我发现的这个 XmlResult 类,并根据我的 XML 响应需求对其进行了微调:

public class XmlResult : ActionResult
{
private object objectToSerialize;

/// <summary>
/// Initializes a new instance of the <see cref="XmlResult"/> class.
/// </summary>
/// <param name="objectToSerialize">The object to serialize to XML.</param>
public XmlResult(object objectToSerialize)
{
this.objectToSerialize = objectToSerialize;
}

/// <summary>
/// Gets the object to be serialized to XML.
/// </summary>
public object ObjectToSerialize
{
get { return this.objectToSerialize; }
}

/// <summary>
/// Serialises the object that was passed into the constructor to XML and writes the corresponding XML to the result stream.
/// </summary>
/// <param name="context">The controller context for the current request.</param>
public override void ExecuteResult(ControllerContext context)
{
if (this.objectToSerialize != null)
{
context.HttpContext.Response.Clear();
XmlRootAttribute root = new XmlRootAttribute("response");

var xs = new System.Xml.Serialization.XmlSerializer(this.objectToSerialize.GetType(), root);
context.HttpContext.Response.ContentType = "text/xml";

xs.Serialize(context.HttpContext.Response.Output, this.objectToSerialize);
}
}

然后,只要您想从 Action 中返回 XML,您只需执行以下操作:

public ActionResult GetStuffAsXml(int id)
{
var dbStuff = db.GetStuff(id);
// fetch stuff in database
return new XmlResult(dbStuff);
}

希望对您有所帮助!

关于c# - 如何将实体从 ASP.NET MVC 站点序列化为 XML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3445433/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com