【问题标题】:Converting Dataset to a model class将数据集转换为模型类
【发布时间】:2011-07-21 15:25:03
【问题描述】:

我的 Web 服务正在返回一个包含 1 个表的数据集,其中包含 135 列。 我需要构建一个模型类(在 C# 中),它应该将所有 135 个列名作为类的属性名称。

有什么方法可以让我使用文件流编写器并构建我的课程?

注意:我可以轻松地将数据集转换为 XML,但是我必须做大量的复制粘贴工作来手动创建类。 :(。

【问题讨论】:

标签: c# .net asp.net-mvc


【解决方案1】:

在 C# 中实际上有一些方法可以将 XML 转换为类:

http://sharpertutorials.com/using-xsd-tool-to-generate-classes-from-xml/

但如果 XML 来自数据集的默认序列化,那么它可能看起来很可怕。

【讨论】:

  • 非常正确。生成的类有太多额外和不必要的信息。
  • @Biki 您可以使用它来获取大部分类并将其缩减为仅属性。
【解决方案2】:

我得到了另一种方法,如下所述:

第 1 步:将您的数据集转换为 XML 文档:

            var xmlSW = new System.IO.StreamWriter(@"c:\xml\Krishna.xml");
            myDataset.WriteXml(xmlSW, System.Data.XmlWriteMode.WriteSchema);
            xmlSW.Close();

第 2 步:将您的 XML 文档转换为 XSD 文档。

   -> Open Visual Studio Command Promt.
   -> Type : xsd c:\xml\Krishna.xml (that is the path of the xml file.

例如: C:\Windows\system32>xsd c:\xml\krishna.xml Microsoft (R) Xml Schemas/DataTypes 支持实用程序 [Microsoft (R) .NET Framework,版本 4.0.30319.1] 版权所有 (C) 微软公司。版权所有。 写入文件'C:\Windows\system32\krishna.xsd'。

第 3 步:将 xsd 转换为 C# 类。

   -> Open Visual Studio Command Promt.
   -> Type : xsd krishna.xsd /classes

例如: C:\Windows\system32>xsd krishna.xsd /classes Microsoft (R) Xml Schemas/DataTypes 支持实用程序 [Microsoft (R) .NET Framework,版本 4.0.30319.1] 版权所有 (C) 微软公司。版权所有。 写入文件 'C:\Windows\system32\krishna.cs'。

注意:生成的属性名称可以通过 Resharper 或类似工具正确重命名(如果不正确)。

输出类文件可能包含一些您需要清理的不必要信息。 因此,如果您的数据集正在返回包含数百列的大型表,并且您不想手动复制粘贴所有这些表以创建自己的映射类,则此方法适用。

一旦获得结构(类),就可以使用 XmlSerializer 将其转换为对象,反之亦然。

【讨论】:

    【解决方案3】:

    我建议您研究一下脚手架。你可以在这里下载:

    ASP.Net MVC Scaffold Generator

    MVC Scaffold Generator 是新的 ASP.NET 的 CRUD 代码生成器 MVC 框架。

    MVC Scaffold Generator 允许您快速创建基本的 添加/编辑/删除/列出 Asp.NET 页面。

    您也可以在这里观看截屏视频:

    ASP.Net MVC Scaffold Generator screencast

    这是一个 Microsoft 演练:

    Using MVC View Templates with Data Scaffolding

    【讨论】:

    • 对不起 Neil,我认为 Scaffolding 不会帮助我从 Dataset 或 XML 文档创建 c# 类。
    猜你喜欢
    • 2017-10-24
    • 1970-01-01
    • 2019-07-15
    • 1970-01-01
    • 2010-11-15
    • 2016-01-20
    • 2021-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多