C# 如何从数据库中填充从 xsd.exe 创建的 cass

C# how to populate cass created from xsd.exe from database

我目前正在处理一个案例,我必须从数据库中导入大量数据并将其输出为与 xsd 模式匹配的 xml。我使用 xsd.exe 为特定模式生成 c# class。

我的问题是,我如何使用此 class 来填充数据库中的数据?

我的 class 看起来像这样:`

[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.33440")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "TTC_Queue")]
    [System.Xml.Serialization.XmlRootAttribute(Namespace = "MT_Queue", IsNullable = false)]
    public partial class STAGING_Low
    {
        private object[] itemsField;

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("TTC_Queue", typeof(TTC_Queue))]
        [System.Xml.Serialization.XmlElementAttribute("ROW_COUNTS", typeof(ROW_COUNTS))]
        public object[] Items
        {
            get
            {
                return this.itemsField;
            }
            set
            {
                this.itemsField = value;
            }
        }
    }

    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.33440")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "TTC_Queue")]
    public partial class TTC_Queue
    {
        private System.Data.SqlTypes.SqlDecimal reportingUnitCodeField;

        private bool reportingUnitCodeFieldSpecified;

        private System.Data.SqlTypes.SqlString preparerNField;
        //more fields

`

i 将在其中填充 "ttc_queue" 的多个元素。 我已经填充了一个 ttc_queue 的对象[] 以用于此。

如何将此数组设置为 "item fields" 然后反序列化它?

我目前有:

 STAGING_low low = new STAGING_Low();
low.Items = new TTC_Queue[1];
low.Items.SetValue(myObject[],0);

我在设置值时遇到错误:

An unhandled exception of type 'System.InvalidCastException' occurred in mscorlib.dll

Additional information: Object cannot be stored in an array of this type.

我不确定我错过了什么。

感谢您的帮助。

我认为在这种情况下序列化不是正确的方法。如果您正确生成 SQL 查询,我认为下面的代码应该可以工作

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            DataSet ds = new DataSet();
            ds.ReadXmlSchema("filename");
            string SQL = "SELECT QUERY";
            string connStr = "Enter you connection string here";
            SqlDataAdapter adapter = new SqlDataAdapter(SQL, connStr);
            adapter.Fill(ds);

            ds.WriteXml("filename");
        }
    }
}