Пример #1
0
 protected S_OD_KONACNI_POREZ_PO_OPCINAMADataSet(SerializationInfo info, StreamingContext context) : base(info, context, false)
 {
     this._schemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema;
     if (this.IsBinarySerialized(info, context))
     {
         this.InitVars(false);
         CollectionChangeEventHandler handler2 = new CollectionChangeEventHandler(this.SchemaChanged);
         this.Tables.CollectionChanged    += handler2;
         this.Relations.CollectionChanged += handler2;
     }
     else
     {
         string s = Conversions.ToString(info.GetValue("XmlSchema", typeof(string)));
         if (this.DetermineSchemaSerializationMode(info, context) == System.Data.SchemaSerializationMode.IncludeSchema)
         {
             DataSet dataSet = new DataSet();
             dataSet.ReadXmlSchema(new XmlTextReader(new StringReader(s)));
             if (dataSet.Tables["S_OD_KONACNI_POREZ_PO_OPCINAMA"] != null)
             {
                 this.Tables.Add(new S_OD_KONACNI_POREZ_PO_OPCINAMADataTable(dataSet.Tables["S_OD_KONACNI_POREZ_PO_OPCINAMA"]));
             }
             this.DataSetName        = dataSet.DataSetName;
             this.Prefix             = dataSet.Prefix;
             this.Namespace          = dataSet.Namespace;
             this.Locale             = dataSet.Locale;
             this.CaseSensitive      = dataSet.CaseSensitive;
             this.EnforceConstraints = dataSet.EnforceConstraints;
             this.Merge(dataSet, false, MissingSchemaAction.Add);
             this.InitVars();
         }
         else
         {
             this.ReadXmlSchema(new XmlTextReader(new StringReader(s)));
         }
         this.GetSerializationData(info, context);
         CollectionChangeEventHandler handler = new CollectionChangeEventHandler(this.SchemaChanged);
         base.Tables.CollectionChanged    += handler;
         this.Relations.CollectionChanged += handler;
     }
 }
Пример #2
0
        protected DSInforme(SerializationInfo info, StreamingContext context) :
            base(info, context, false)
        {
            if ((this.IsBinarySerialized(info, context) == true))
            {
                this.InitVars(false);
                CollectionChangeEventHandler schemaChangedHandler1 = new CollectionChangeEventHandler(this.SchemaChanged);
                this.Tables.CollectionChanged    += schemaChangedHandler1;
                this.Relations.CollectionChanged += schemaChangedHandler1;
                return;
            }
            string strSchema = ((string)(info.GetValue("XmlSchema", typeof(string))));

            if ((this.DetermineSchemaSerializationMode(info, context) == SchemaSerializationMode.IncludeSchema))
            {
                DataSet ds = new DataSet();
                ds.ReadXmlSchema(new XmlTextReader(new StringReader(strSchema)));
                if ((ds.Tables["DSInforme"] != null))
                {
                    base.Tables.Add(new DSInformeDataTable(ds.Tables["DSInforme"]));
                }
                this.DataSetName        = ds.DataSetName;
                this.Prefix             = ds.Prefix;
                this.Namespace          = ds.Namespace;
                this.Locale             = ds.Locale;
                this.CaseSensitive      = ds.CaseSensitive;
                this.EnforceConstraints = ds.EnforceConstraints;
                this.Merge(ds, false, MissingSchemaAction.Add);
                this.InitVars();
            }
            else
            {
                this.ReadXmlSchema(new XmlTextReader(new StringReader(strSchema)));
            }
            this.GetSerializationData(info, context);
            CollectionChangeEventHandler schemaChangedHandler = new CollectionChangeEventHandler(this.SchemaChanged);

            base.Tables.CollectionChanged    += schemaChangedHandler;
            this.Relations.CollectionChanged += schemaChangedHandler;
        }
Пример #3
0
        public MainWindow()
        {
            InitializeComponent();

            musicLib = new MusicLib();

            mediaPlayer = new MediaPlayer();

            try
            {
                musicDataSet = new DataSet();
                musicDataSet.ReadXmlSchema("music.xsd");
                musicDataSet.ReadXml("music.xml");
            }
            catch (Exception e)
            {
                DisplayError("Error loading file: " + e.Message);
            }

            musicLib.PrintAllTables();

            Console.WriteLine("Total songs = " + musicDataSet.Tables["song"].Rows.Count);

            // Get a list of all song IDs
            DataTable songs = musicDataSet.Tables["song"];
            var       ids   = musicLib.SongIds;

            // Put the ids in an ObservableCollection, which has Add & Remove methods for use later.
            // The UI will update itself automatically if any changes are made to this collection.
            songIds = new ObservableCollection <string>(ids);

            // Bind the song IDs to the combo box
            songIdComboBox.ItemsSource = songIds;

            // Select the first item
            if (songIdComboBox.Items.Count > 0)
            {
                songIdComboBox.SelectedItem = songIdComboBox.Items[0];
            }
        }
Пример #4
0
 protected RptData(SerializationInfo info, StreamingContext context) : base(info, context, false)
 {
     this._schemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema;
     if (base.IsBinarySerialized(info, context))
     {
         this.InitVars(false);
         CollectionChangeEventHandler handler = new CollectionChangeEventHandler(this.SchemaChanged);
         this.Tables.CollectionChanged    += handler;
         this.Relations.CollectionChanged += handler;
     }
     else
     {
         string s = (string)info.GetValue("XmlSchema", typeof(string));
         if (base.DetermineSchemaSerializationMode(info, context) == System.Data.SchemaSerializationMode.IncludeSchema)
         {
             DataSet dataSet = new DataSet();
             dataSet.ReadXmlSchema(new XmlTextReader(new StringReader(s)));
             if (dataSet.Tables["tbTaskDtlList"] != null)
             {
                 base.Tables.Add(new tbTaskDtlListDataTable(dataSet.Tables["tbTaskDtlList"]));
             }
             base.DataSetName        = dataSet.DataSetName;
             base.Prefix             = dataSet.Prefix;
             base.Namespace          = dataSet.Namespace;
             base.Locale             = dataSet.Locale;
             base.CaseSensitive      = dataSet.CaseSensitive;
             base.EnforceConstraints = dataSet.EnforceConstraints;
             base.Merge(dataSet, false, MissingSchemaAction.Add);
             this.InitVars();
         }
         else
         {
             base.ReadXmlSchema(new XmlTextReader(new StringReader(s)));
         }
         base.GetSerializationData(info, context);
         CollectionChangeEventHandler handler2 = new CollectionChangeEventHandler(this.SchemaChanged);
         base.Tables.CollectionChanged    += handler2;
         this.Relations.CollectionChanged += handler2;
     }
 }
Пример #5
0
        public void DeSerializationToDataSet()
        {
            DataSet deSerializeDS = new DataSet();

            try
            {
                deSerializeDS.ReadXmlSchema(@"C:\Users\Kkoka\Desktop\Refactor_TM\Onix_Harlequin.xml");
                deSerializeDS.ReadXml(@"C:\Users\Kkoka\Desktop\Refactor_TM\Onix_Harlequin.xml", XmlReadMode.IgnoreSchema);

                for (int i = 0; i < deSerializeDS.Tables.Count; i++)
                {
                    Console.WriteLine(" ");
                    Console.WriteLine("\n Table No: " + i);

                    Console.WriteLine("Column Header: ");

                    for (int j = 0; j < deSerializeDS.Tables[i].Columns.Count; j++)
                    {
                        Console.Write("   " + deSerializeDS.Tables[i].Columns[j].ColumnName.ToString());
                    }



                    for (int j = 0; j < deSerializeDS.Tables[i].Rows.Count; j++)
                    {
                        Console.WriteLine("");

                        for (int x = 0; x < deSerializeDS.Tables[i].Columns.Count; x++)
                        {
                            Console.Write("   " + deSerializeDS.Tables[i].Rows[j][x].ToString());
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                //Handle Exception
                Console.WriteLine("Exception : " + ex.Message.ToString());
            }
        }
Пример #6
0
        /// <summary>
        /// Xml情報フォルダ読み込み処理
        /// </summary>
        /// <param name="argDS">読み込み情報格納先データセット</param>
        /// <param name="importFolderPath">読み込み対象フォルダ</param>
        static public void importXmlFiles(out DataSet argDS, string importFolderPath)
        {
            DataSet   oneXmlLoader;      // Xml 読み込み作業用DataSet
            DataTable oneXmlTable;       // work用DataTable
            string    strSchemaFileName; // Xsdスキーマファイルフルパス
            string    strRecordFileName; // Xmlレコードファイルフルパス

            string[] fileNameList;       // ファイルパスリスト

            argDS = new DataSet();       // 読込先Datasetを初期化

            // xsdファイルにはテーブルにどのような列が存在するのかを格納している
            // 第2引数で指定されたフォルダに格納されているxsdファイルのリストを取得
            fileNameList = System.IO.Directory.GetFiles(importFolderPath, "*.xsd", System.IO.SearchOption.AllDirectories);

            // フォルダ内のスキーマファイル分ループ
            for (int iLoop = 0; iLoop < fileNameList.Length; iLoop++)
            {
                // xsdファイル名をリストから取得
                strSchemaFileName = fileNameList[iLoop];
                // xmlファイル名を取得
                strRecordFileName = strSchemaFileName.Replace(".xsd", ".xml");
                // 作業用Datasetを初期化
                oneXmlLoader = new DataSet();
                // 作業用DataTabaleを初期化
                oneXmlTable = new DataTable();
                // スキーマ情報を読み込み
                oneXmlLoader.ReadXmlSchema(strSchemaFileName);
                // レコードファイルが存在するかをチェック
                if (System.IO.File.Exists(strRecordFileName) == true)
                {
                    // レコードファイルを読み込み
                    oneXmlLoader.ReadXml(strRecordFileName);
                }
                // 作業用DataTableに退避
                oneXmlTable = oneXmlLoader.Tables[0].Copy();
                // 戻り値用DataSetへ格納
                argDS.Tables.Add(oneXmlTable);
            }
        }
Пример #7
0
        protected guard_profiles_dbDataSet(SerializationInfo info, StreamingContext context) : base(info, context, false)
        {
            if (base.IsBinarySerialized(info, context))
            {
                this.InitVars(false);
                CollectionChangeEventHandler schemaChangedHandler1 = new CollectionChangeEventHandler(this.SchemaChanged);
                this.Tables.CollectionChanged    += schemaChangedHandler1;
                this.Relations.CollectionChanged += schemaChangedHandler1;
                return;
            }
            string strSchema = (string)info.GetValue("XmlSchema", typeof(string));

            if (base.DetermineSchemaSerializationMode(info, context) != System.Data.SchemaSerializationMode.IncludeSchema)
            {
                base.ReadXmlSchema(new XmlTextReader(new StringReader(strSchema)));
            }
            else
            {
                DataSet ds = new DataSet();
                ds.ReadXmlSchema(new XmlTextReader(new StringReader(strSchema)));
                if (ds.Tables["Tbl_sg_profiles"] != null)
                {
                    base.Tables.Add(new guard_profiles_dbDataSet.Tbl_sg_profilesDataTable(ds.Tables["Tbl_sg_profiles"]));
                }
                base.DataSetName        = ds.DataSetName;
                base.Prefix             = ds.Prefix;
                base.Namespace          = ds.Namespace;
                base.Locale             = ds.Locale;
                base.CaseSensitive      = ds.CaseSensitive;
                base.EnforceConstraints = ds.EnforceConstraints;
                base.Merge(ds, false, MissingSchemaAction.Add);
                this.InitVars();
            }
            base.GetSerializationData(info, context);
            CollectionChangeEventHandler schemaChangedHandler = new CollectionChangeEventHandler(this.SchemaChanged);

            base.Tables.CollectionChanged    += schemaChangedHandler;
            this.Relations.CollectionChanged += schemaChangedHandler;
        }
 //button export click event
 private void btn_export_Click(object sender, EventArgs e)
 {
     using (var ctx = new TicketsEntities())
     {
         DataSet ds = new DataSet();
         // get desired ticket
         String ticketCod = textBox_ticketCode.Text;
         //reads XML_Schema to build dataset
         ds.ReadXmlSchema("XML_Schema.xsd");
         DataTableCollection dtc = ds.Tables;
         //
         var result = ctx.proc_Get_Ticket_Info(ticketCod);
         //populate dataset
         int i = 0;
         foreach (var ticket in result)
         {
             if (i == 0)
             {
                 // ticket info
                 dtc["ticket"].Rows.Add(new Object[] { ticket.tt_id, ticket.cod, ticket.ticketState, ticket.ticketDescription, 1 });
                 dtc["owner"].Rows.Add(new Object[] { ticket.owner_email, ticket.owner_name, ticket.owner_id, ticket.owner_email, 1 });
                 dtc["supervisor"].Rows.Add(new Object[] { ticket.anumber, ticket.tech_name, ticket.tech_email, ticket.anumber, 1 });
                 dtc["type_type"].Rows.Add(new Object[] { ticket.tt_id, ticket.tt_name, ticket.tt_id, 1 });
                 // ticket actions sequence
                 dtc["actions"].Rows.Add(new object[] { 1 });
                 ++i;
             }
             // continues until there's no more actions
             dtc["action"].Rows.Add(new object[] { ticket.orderNumber, ticket.beginDate, ticket.endDate, ticket.orderNumber, 1 });
         }
         ds.DataSetName = "Ticket_Info";
         //saves both xsd and xml
         ds.WriteXml(textBox_filename.Text + ".xml");
         ds.WriteXmlSchema(textBox_filename.Text + ".xsd");
         MessageBox.Show("The ticket " + textBox_ticketCode.Text + " has been exported to " + textBox_filename + ".xml");
         //
         ctx.SaveChanges();
     }
 }
Пример #9
0
        internal static DataSet ReadDataSet()
        {
            //注意:
            //
            //1.在两个表的属性中设置每个字段的属性
            //2.xsd文件中的DataSet的Name属性必须要和xml文件中的根节点名一致
            //3.xsd文件中的DataSet的NameSpace属性必须要和xml文件中的根节点中描述一致
            //4.修改store.xsd和store.xml的复制到输出目录为始终复制
            DataSet ds = new DataSet();

            ds.ReadXmlSchema("./store.xsd");//store.xsd是数据集

            //测试检查
            string xmlSchema = ds.GetXmlSchema();

            ds.ReadXml("./store.xml");

            //测试检查
            string xml = ds.GetXml();

            return(ds);
        }
Пример #10
0
        public static void SaveConfig(SConfig _cfg)
        {
            try
            {
                DataSet ds = new DataSet(ConfigFilename);
                ds.ReadXmlSchema(ConfigFilename.Substring(0, ConfigFilename.Length - 3) + "xsd");
                ds.ReadXml(ConfigFilename);

                DataRow dr = ds.Tables[XML.TableKeypad.ToString()].Rows[0];

                dr[XML.Filename.ToString()]         = _cfg.strKeypadFilename;
                dr[XML.LastLevel.ToString()]        = _cfg.iKeypadLastLevel;
                dr[XML.LevelUpBySpeed.ToString()]   = _cfg.iKeypadLevelSpeedUp;
                dr[XML.LevelDownBySpeed.ToString()] = _cfg.iKeypadLevelSdeedDown;
                dr[XML.LevelDownByError.ToString()] = _cfg.iKeypadLevelErrorDown;
                dr[XML.CharPerMinute.ToString()]    = _cfg.iKeypadCharPermin;
                dr[XML.ErrorPerMinute.ToString()]   = _cfg.iKeypadErrPermin;
                dr[XML.Fontname.ToString()]         = _cfg.fontKeypad.Name;
                dr[XML.Fontsize.ToString()]         = _cfg.fontKeypad.Size.ToString();

                dr = ds.Tables[XML.TableNumpad.ToString()].Rows[0];

                dr[XML.Filename.ToString()]         = _cfg.strNumpadFilename;
                dr[XML.LastLevel.ToString()]        = _cfg.iNumpadLastLevel;
                dr[XML.LevelUpBySpeed.ToString()]   = _cfg.iNumpadLevelSpeedUp;
                dr[XML.LevelDownBySpeed.ToString()] = _cfg.iNumpadLevelSpeedDown;
                dr[XML.LevelDownByError.ToString()] = _cfg.iNumpadLevelErrorDown;
                dr[XML.CharPerMinute.ToString()]    = _cfg.iNumpadCharPermin;
                dr[XML.ErrorPerMinute.ToString()]   = _cfg.iNumpadErrPermin;
                dr[XML.Fontname.ToString()]         = _cfg.fontNumpad.Name;
                dr[XML.Fontsize.ToString()]         = _cfg.fontNumpad.Size.ToString();

                ds.WriteXml(ConfigFilename);
            }
            catch (Exception e)
            {
                throw e;
            }
        }
Пример #11
0
 private void buttonAddTableXML_Click(object sender, EventArgs e)
 {
     using (OpenFileDialog ofd = new OpenFileDialog()
     {
         Filter = "XML|*.xml|XaML|*.xaml|All|*.*", ValidateNames = true, Multiselect = false
     })
     {
         if (ofd.ShowDialog() == DialogResult.OK)
         {
             try
             {
                 XmlReader xmlFile = XmlReader.Create(ofd.FileName, new XmlReaderSettings());
                 DataSet   ds      = new DataSet();
                 ds.ReadXmlSchema(xmlFile);
                 xmlFile.Close();
                 NewTableSQL  nTSQL      = new NewTableSQL(ds);
                 DBConnection connection = DBConnection.Instance();
                 connection.DatabaseName = textBoxDatabase.Text;
                 connection.Port         = textBoxPort.Text;
                 connection.Server       = textBoxDataSource.Text;
                 connection.Password     = textBoxPassword.Text;
                 connection.Login        = textBoxLogin.Text;
                 //MessageBox.Show(nTSQL.CreateTable());
                 if (connection.IsConnect())
                 {
                     using (MySqlCommand command = new MySqlCommand(nTSQL.CreateTable(), connection.Connection))
                     {
                         command.ExecuteNonQuery();
                     }
                     connection.Close();
                 }
             }
             catch (Exception ex)
             {
                 MessageBox.Show(ex.Message);
             }
         }
     }
 }
Пример #12
0
        /// <summary>
        /// 数据展示
        /// </summary>
        /// <param name="TradeStockList"></param>
        /// <param name="CurrentView"></param>
        /// <param name="CurrentGc"></param>
        private void LoadData(List <IGrouping <string, View_TradeStock> > TradeStockList, GridView CurrentView, GridControl CurrentGc)
        {
            DataSet dataSet = new DataSet();
            //从XML文件读出暂存数据库表格框架 包含TradeList表和OrderList表
            MemoryStream stream = new MemoryStream(Resources.TradeStockSchema);

            try
            {
                dataSet.ReadXmlSchema(stream);
            }
            finally
            {
                stream.Close();
            }
            #region 初始化数据
            foreach (IGrouping <string, View_TradeStock> tradeCur in TradeStockList)
            {
                /* trade表初始化*/
                DataRow tradeRow = dataSet.Tables["TradeList"].NewRow();
                InitTradeRow(tradeRow, tradeCur);
                dataSet.Tables["TradeList"].Rows.Add(tradeRow);

                int productAccount = tradeCur.Where(o => o.OrderType == emumOrderType.SellGoods).Count(); //用于消除赠品的影响
                foreach (View_TradeStock orderCurrent in tradeCur)
                {
                    /* order表初始化  */
                    DataRow orderRow = dataSet.Tables["OrderList"].NewRow();
                    InitOrderRow(orderRow, orderCurrent);
                    dataSet.Tables["OrderList"].Rows.Add(orderRow);
                }
                // 数据绑定相关连操作
                CurrentGc.DataSource = dataSet.Tables["TradeList"];
                CurrentGc.ForceInitialize();                                                              //强制初始化
                CurrentView.BestFitColumns();
                gcWaitPst.LevelTree.Nodes.Add(Alading.Taobao.Constants.TRADE_ORDER_RELATION, gvOrderPst); //建立联级绑定

                #endregion
            }
        }
Пример #13
0
        static void Main(string[] args)
        {
            var simpleShopDB = new DataSet();

            simpleShopDB.ReadXmlSchema(@"C:\Users\HP\Desktop\Test\ShopDbSchema.xml");
            simpleShopDB.ReadXml(@"C:\Users\HP\Desktop\Test\ShopDBData.xml");

            var strongShopDB = new ShopDB();

            strongShopDB.Customers.Merge(simpleShopDB.Tables["Customers"]); //merged customers table from simple data set with strongly typed data set shopdb

            foreach (DataRow row in strongShopDB.Customers.Rows)
            {
                foreach (DataColumn column in strongShopDB.Customers.Columns)
                {
                    Console.WriteLine($"{column.ColumnName}: {row[column]}");
                }
                Console.WriteLine();
            }

            Console.ReadKey();
        }
Пример #14
0
        /// <summary>
        /// Obtain the report information from the received files.
        /// </summary>
        /// <returns></returns>
        private bool ReadReportInfo()
        {
            DataSet lDataSet = new DataSet();

            try
            {
                lDataSet.ReadXmlSchema(mDataSetFile);
            }
            catch (Exception e)
            {
                Exception excReadingFile = new Exception(CultureManager.TranslateString(LanguageConstantKeys.L_ERROR_LOADING_REPORTSCONFIG, LanguageConstantValues.L_ERROR_LOADING_REPORTSCONFIG), e);
                ScenarioManager.LaunchErrorScenario(excReadingFile);
                return(false);
            }

            DataTable lStartingClass = lDataSet.Tables[this.ClassName];

            if (lStartingClass == null)
            {
                object[] lArgs = new object[2];
                lArgs[0] = this.ClassName;
                lArgs[1] = lDataSet.DataSetName;
                string lErrorMessage = CultureManager.TranslateStringWithParams(LanguageConstantKeys.L_ERROR_DATASET_TABLENOTFOUND, LanguageConstantValues.L_ERROR_DATASET_TABLENOTFOUND, lArgs);

                ScenarioManager.LaunchErrorScenario(new Exception(lErrorMessage));
                return(false);
            }

            foreach (DataColumn lCol in lStartingClass.Columns)
            {
                if (!string.IsNullOrEmpty(mPopulationContext.DisplaySetAttributes))
                {
                    mPopulationContext.DisplaySetAttributes += ",";
                }
                mPopulationContext.DisplaySetAttributes += lCol.ColumnName;
            }

            return(true);
        }
Пример #15
0
 protected labtechDataSet(SerializationInfo info, StreamingContext context) : base(info, context, false)
 {
     if (!base.IsBinarySerialized(info, context))
     {
         string value = (string)info.GetValue("XmlSchema", typeof(string));
         if (base.DetermineSchemaSerializationMode(info, context) != System.Data.SchemaSerializationMode.IncludeSchema)
         {
             base.ReadXmlSchema(new XmlTextReader(new StringReader(value)));
         }
         else
         {
             DataSet dataSet = new DataSet();
             dataSet.ReadXmlSchema(new XmlTextReader(new StringReader(value)));
             if (dataSet.Tables["computers"] != null)
             {
                 base.Tables.Add(new labtechDataSet.computersDataTable(dataSet.Tables["computers"]));
             }
             base.DataSetName        = dataSet.DataSetName;
             base.Prefix             = dataSet.Prefix;
             base.Namespace          = dataSet.Namespace;
             base.Locale             = dataSet.Locale;
             base.CaseSensitive      = dataSet.CaseSensitive;
             base.EnforceConstraints = dataSet.EnforceConstraints;
             base.Merge(dataSet, false, MissingSchemaAction.Add);
             this.InitVars();
         }
         base.GetSerializationData(info, context);
         CollectionChangeEventHandler collectionChangeEventHandler = new CollectionChangeEventHandler(this.SchemaChanged);
         base.Tables.CollectionChanged    += collectionChangeEventHandler;
         this.Relations.CollectionChanged += collectionChangeEventHandler;
     }
     else
     {
         this.InitVars(false);
         CollectionChangeEventHandler collectionChangeEventHandler1 = new CollectionChangeEventHandler(this.SchemaChanged);
         this.Tables.CollectionChanged    += collectionChangeEventHandler1;
         this.Relations.CollectionChanged += collectionChangeEventHandler1;
     }
 }
Пример #16
0
        /// <summary>
        ///  Load xml node into a releational dataset
        /// </summary>
        /// <param name="xmlNode">xmlNode to load into the dataset</param>
        /// <param name="xmlSchema">xmlschema used to parse the xml data</param>
        /// <param name="dataSetName">The Name of the dataset to create</param>
        /// <returns>A releational dataset containing the xml document</returns>
        public DataSet LoadXMLInToDataSet(XmlNode xmlNode, MemoryStream xmlSchema, string dataSetName)
        {
            DataSet dsXmlData = new DataSet(dataSetName);

            try
            {
                XmlReader xmlReader = new XmlNodeReader(xmlNode);

                xmlSchema.Position = 0;
                dsXmlData.ReadXmlSchema(xmlSchema);
                dsXmlData.ReadXml(xmlReader);

                dsXmlData.DataSetName = dataSetName;
            }

            catch (Exception ex)
            {
                mLogger.Error("LoadXMLInToDataSet", ex);
            }

            return(dsXmlData);
        }
Пример #17
0
        /// <summary>读取执行记录
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void 读取执行记录ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            try
            {
                FolderBrowserDialog dialog = new FolderBrowserDialog();
                dialog.Description  = "请选择文件夹";
                dialog.SelectedPath = System.Environment.CurrentDirectory + "\\RFCFunConfig\\";
                string foldPath = "";
                if (dialog.ShowDialog() == DialogResult.OK)
                {
                    foldPath = dialog.SelectedPath;
                }
                else
                {
                    return;
                }
                if (!File.Exists(foldPath + "\\JieGou.XML"))
                {
                    MessageBox.Show("文件夹中未找到JieGou.XML文件");
                    return;
                }

                if (!File.Exists(foldPath + "\\ShuZhi.XML"))
                {
                    MessageBox.Show("文件夹中未找到ShuZhi.XML文件");
                    return;
                }
                DataSet ds2 = new DataSet();
                ds2.ReadXmlSchema(foldPath + "\\JieGou.XML");
                ds2.ReadXml(foldPath + "\\ShuZhi.XML");
                dsRFC = new DataSet();
                dsRFC = ds2;
                FillForm();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Пример #18
0
        public static DataSet DecryptDataSet(string path)
        {
            DataSet ds  = new DataSet();
            DES     des = new DESCryptoServiceProvider();

            try
            {
                using (StreamReader sr = new StreamReader(Path.Combine(path, "DES.bin")))
                {
                    BinaryFormatter bf    = new BinaryFormatter();
                    byte[][]        stuff = (byte[][])bf.Deserialize(sr.BaseStream);
                    des.Key = stuff[0];
                    des.IV  = stuff[1];
                }

                ds.ReadXmlSchema(Path.Combine(path, "ESQUEMA.xsd"));

                using (FileStream fs = new FileStream(Path.Combine(path, "DATA.xml"), FileMode.Open, FileAccess.Read))
                {
                    using (CryptoStream cs = new CryptoStream(fs, des.CreateDecryptor(), CryptoStreamMode.Read))
                    {
                        ds.ReadXml(cs);
                    }
                }

                return(ds);
            }
            catch
            {
                return(null);
            }
            finally
            {
                des.Dispose();
                des = null;
                ds.Dispose();
                ds = null;
            }
        }
Пример #19
0
        public static void UpdateShipUser()
        {
            try
            {
                // Here your xml file
                string xmlFile = path + "\\" + ConfigurationManager.AppSettings["xmlShipUser"].ToString();
                int    ShipId  = int.Parse(ConfigurationManager.AppSettings["SHIPID"].ToString());
                if (File.Exists(xmlFile))
                {
                    DataSet dataSet = new DataSet();
                    dataSet.ReadXmlSchema(xmlFile);
                    dataSet.ReadXml(xmlFile, XmlReadMode.ReadSchema);

                    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["TCCCMSDBConnectionString"].ConnectionString);
                    con.Open();
                    SqlCommand cmd = new SqlCommand("UpdateShipUserExportInShip", con);
                    cmd.CommandType = CommandType.StoredProcedure;

                    foreach (DataRow row in dataSet.Tables[0].Rows)
                    {
                        //cmd.Parameters.AddWithValue("@ID", int.Parse(row["ID"].ToString()));

                        if (ShipId == int.Parse(row["ShipId"].ToString()))
                        {
                            cmd.Parameters.AddWithValue("@UserId", row["UserId"].ToString());
                            cmd.Parameters.AddWithValue("@UserCode", row["UserCode"].ToString());
                            int x = cmd.ExecuteNonQuery();
                            cmd.Parameters.Clear();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                TccLog.UpdateLog(ex.InnerException.Message, LogMessageType.Error, "Ship Export-UpdateShipUser");
                logger.Error(ex, "Ticket Export");
                //throw;
            }
        }
Пример #20
0
        private DataSet OpenXml()
        {
            this._mut.WaitOne();
            try
            {
                DataSet ds        = new DataSet();
                string  xsdSchema = (string)global::RainstormStudios.Web.Properties.Resources.ResourceManager.GetObject("XmlMembership");
                using (MemoryStream xsdStrm = new MemoryStream(Encoding.ASCII.GetBytes(xsdSchema)))
                    ds.ReadXmlSchema(xsdStrm);
                if (System.IO.File.Exists(this.XmlPath))
                {
                    using (XmlTextReader xmlRdr = new XmlTextReader(this.XmlPath))
                        ds.ReadXml(xmlRdr, XmlReadMode.IgnoreSchema);
                }

                // Setup PrimaryKey information.
                ds.Tables["Users"].PrimaryKey        = new DataColumn[] { ds.Tables["Users"].Columns["UserId"], ds.Tables["Users"].Columns["ApplicationId"] };
                ds.Tables["Profile"].PrimaryKey      = new DataColumn[] { ds.Tables["Profile"].Columns["UserName"], ds.Tables["Profile"].Columns["ApplicationName"] };
                ds.Tables["Roles"].PrimaryKey        = new DataColumn[] { ds.Tables["Roles"].Columns["ApplicationId"], ds.Tables["Roles"].Columns["RoleID"] };
                ds.Tables["UsersInRoles"].PrimaryKey = new DataColumn[] { ds.Tables["UsersInRoles"].Columns["RoleId"], ds.Tables["UsersInRoles"].Columns["UserId"], ds.Tables["UsersInRoles"].Columns["ApplicationId"] };
                ds.Tables["Applications"].PrimaryKey = new DataColumn[] { ds.Tables["Applications"].Columns["ApplicationId"] };
                ds.Tables["Membership"].PrimaryKey   = new DataColumn[] { ds.Tables["Membership"].Columns["ApplicationId"], ds.Tables["Membership"].Columns["UserId"] };
                ds.Tables["Paths"].PrimaryKey        = new DataColumn[] { ds.Tables["Paths"].Columns["ApplicationID"], ds.Tables["Paths"].Columns["PathId"] };

                // Setup Foreign Keys
                ds.Tables["Users"].ParentRelations.Add(ds.Tables["Applications"].Columns["ApplicationId"], ds.Tables["Users"].Columns["ApplicationId"]);
                ds.Tables["Profile"].ParentRelations.Add(ds.Tables["Users"].Columns["UserName"], ds.Tables["Profile"].Columns["UserName"]);
                ds.Tables["Profile"].ParentRelations.Add(ds.Tables["Applications"].Columns["ApplicationName"], ds.Tables["Profile"].Columns["ApplicationName"]);

                return(ds);
            }
            catch (Exception ex)
            {
                this.WriteEvent(ex, "OpenXml");
                throw;
            }
            finally
            { this._mut.ReleaseMutex(); }
        }
Пример #21
0
        /// <summary>
        /// 更行符合条件的一条Xml记录
        /// </summary>
        /// <param name="strXmlPath">XML文件路径</param>
        /// <param name="_columns">列名数组</param>
        /// <param name="_columnValue">列值数组</param>
        /// <param name="strWhereColumnName">条件列名</param>
        /// <param name="strWhereColumnValue">条件列值</param>
        /// <returns></returns>
        public static bool UpdateXmlRow(string strXmlPath, string[] _columns, string[] _columnValue, string strWhereColumnName, string strWhereColumnValue)
        {
            try
            {
                string strXsdPath = strXmlPath.Substring(0, strXmlPath.IndexOf(".")) + ".xsd";

                DataSet ds = new DataSet();
                //读xml架构,关系到列的数据类型
                ds.ReadXmlSchema(GetXmlFullPath(strXsdPath));
                ds.ReadXml(GetXmlFullPath(strXmlPath));

                //先判断行数
                if (ds.Tables[0].Rows.Count > 0)
                {
                    for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                    {
                        //如果当前记录为符合Where条件的记录
                        if (ds.Tables[0].Rows[i][strWhereColumnName].ToString().Trim().Equals(strWhereColumnValue))
                        {
                            //循环给找到行的各列赋新值
                            for (int j = 0; j < _columns.Length; j++)
                            {
                                ds.Tables[0].Rows[i][_columns[j]] = _columnValue[j];
                            }
                            //更新DataSet
                            ds.AcceptChanges();
                            //重新写入XML文件
                            ds.WriteXml(GetXmlFullPath(strXmlPath));
                            return(true);
                        }
                    }
                }
                return(false);
            }
            catch (Exception)
            {
                return(false);
            }
        }
        protected CSVExportData(SerializationInfo info, StreamingContext context)
        {
            string s = (string)info.GetValue("XmlSchema", typeof(string));

            if (s != null)
            {
                DataSet dataSet = new DataSet();
                dataSet.ReadXmlSchema(new XmlTextReader(new StringReader(s)));
                if (dataSet.Tables["ExportAnswers"] != null)
                {
                    base.Tables.Add(new ExportAnswersDataTable(dataSet.Tables["ExportAnswers"]));
                }
                if (dataSet.Tables["Voters"] != null)
                {
                    base.Tables.Add(new VotersDataTable(dataSet.Tables["Voters"]));
                }
                if (dataSet.Tables["VoterAnswers"] != null)
                {
                    base.Tables.Add(new VoterAnswersDataTable(dataSet.Tables["VoterAnswers"]));
                }
                base.DataSetName        = dataSet.DataSetName;
                base.Prefix             = dataSet.Prefix;
                base.Namespace          = dataSet.Namespace;
                base.Locale             = dataSet.Locale;
                base.CaseSensitive      = dataSet.CaseSensitive;
                base.EnforceConstraints = dataSet.EnforceConstraints;
                base.Merge(dataSet, false, MissingSchemaAction.Add);
                this.InitVars();
            }
            else
            {
                this.InitClass();
            }
            base.GetSerializationData(info, context);
            CollectionChangeEventHandler handler = new CollectionChangeEventHandler(this.SchemaChanged);

            base.Tables.CollectionChanged    += handler;
            base.Relations.CollectionChanged += handler;
        }
Пример #23
0
        protected Division_Types_Errors_Table(SerializationInfo info, StreamingContext context)
        {
            string strSchema = ((string)(info.GetValue("XmlSchema", typeof(string))));

            if ((strSchema != null))
            {
                DataSet ds = new DataSet();
                ds.ReadXmlSchema(new XmlTextReader(new StringReader(strSchema)));
                if ((ds.Tables["Volume_Error_Type"] != null))
                {
                    Tables.Add(new Volume_Error_TypeDataTable(ds.Tables["Volume_Error_Type"]));
                }
                if ((ds.Tables["Division_Type"] != null))
                {
                    Tables.Add(new Division_TypeDataTable(ds.Tables["Division_Type"]));
                }
                if ((ds.Tables["File_Error_Type"] != null))
                {
                    Tables.Add(new File_Error_TypeDataTable(ds.Tables["File_Error_Type"]));
                }
                DataSetName        = ds.DataSetName;
                Prefix             = ds.Prefix;
                Namespace          = ds.Namespace;
                Locale             = ds.Locale;
                CaseSensitive      = ds.CaseSensitive;
                EnforceConstraints = ds.EnforceConstraints;
                Merge(ds, false, MissingSchemaAction.Add);
                InitVars();
            }
            else
            {
                InitClass();
            }
            GetSerializationData(info, context);
            CollectionChangeEventHandler schemaChangedHandler = SchemaChanged;

            Tables.CollectionChanged    += schemaChangedHandler;
            Relations.CollectionChanged += schemaChangedHandler;
        }
Пример #24
0
        public void TestSampleFileImportSimple()
        {
            DataSet       ds  = new DataSet();
            XmlTextReader xtr = null;

            try {
                xtr             = new XmlTextReader("Test/System.Data/schemas/test010.xsd");
                xtr.XmlResolver = null;
                ds.ReadXmlSchema(xtr);
            } finally {
                if (xtr != null)
                {
                    xtr.Close();
                }
            }
            AssertDataSet("010", ds, "NewDataSet", 1, 0);

            DataTable dt = ds.Tables [0];

            AssertDataTable("root", dt, "foo", 1, 0, 0, 0, 0, 0);
            AssertDataColumn("simple", dt.Columns [0], "bar", false, false, 0, 1, "bar", MappingType.Element, typeof(string), DBNull.Value, String.Empty, -1, String.Empty, 0, String.Empty, false, false);
        }
Пример #25
0
        static void Main(string[] args)
        {
            DataSet simpleShopDb = new DataSet();

            simpleShopDb.ReadXmlSchema(@"D:\ADO.NET\DATA\ShopDbSchema.xml");
            simpleShopDb.ReadXml(@"D:\ADO.NET\DATA\ShopDBData.xml");

            ShopDB strongedShopDB = new ShopDB();

            strongedShopDB.Customers.Merge(simpleShopDb.Tables["Customers"]);
            strongedShopDB.Orders.Merge(simpleShopDb.Tables["Orders"]);

            var selectedCustomer = strongedShopDB.Customers.FindByCustomerNo(1);

            Console.WriteLine("{0} {1} {2}", selectedCustomer.LName, selectedCustomer.FName, selectedCustomer.MName + "\n");
            foreach (var ordersRow in selectedCustomer.GetOrdersRows())
            {
                Console.WriteLine("\tOrderID: " + ordersRow.OrderID);
                Console.WriteLine("\tOrderdate: " + ordersRow.OrderDate);
                Console.WriteLine();
            }
        }
Пример #26
0
        static void Main(string[] args)
        {
            DataSet simpleShopDb = new DataSet();

            simpleShopDb.ReadXmlSchema(@"D:\ADO.NET\DATA\ShopDbSchema.xml");
            simpleShopDb.ReadXml(@"D:\ADO.NET\DATA\ShopDBData.xml");

            ShopDB strongedShopDB = new ShopDB();

            //Слияние обычно применяется для клиентских приложений с целью включения последних изменений из источника данных в существующий класс DataTable. Это позволяет клиентскому приложению иметь класс DataTable, обновленный последними данными из источника.
            strongedShopDB.Customers.Merge(simpleShopDb.Tables["Customers"]);

            foreach (DataRow row in strongedShopDB.Customers.Rows)
            {
                foreach (DataColumn column in strongedShopDB.Customers.Columns)
                {
                    Console.WriteLine("{0}: {1}", column.ColumnName, row[column]);
                }

                Console.WriteLine();
            }
        }
Пример #27
0
        protected dtTKDGTre(SerializationInfo info, StreamingContext context)
        {
            string strSchema = ((string)(info.GetValue("XmlSchema", typeof(string))));

            if ((strSchema != null))
            {
                DataSet ds = new DataSet();
                ds.ReadXmlSchema(new XmlTextReader(new System.IO.StringReader(strSchema)));
                if ((ds.Tables["DOCGIA"] != null))
                {
                    this.Tables.Add(new DOCGIADataTable(ds.Tables["DOCGIA"]));
                }
                if ((ds.Tables["MUONSACH"] != null))
                {
                    this.Tables.Add(new MUONSACHDataTable(ds.Tables["MUONSACH"]));
                }
                if ((ds.Tables["CHITIETPHIEUMUON"] != null))
                {
                    this.Tables.Add(new CHITIETPHIEUMUONDataTable(ds.Tables["CHITIETPHIEUMUON"]));
                }
                this.DataSetName        = ds.DataSetName;
                this.Prefix             = ds.Prefix;
                this.Namespace          = ds.Namespace;
                this.Locale             = ds.Locale;
                this.CaseSensitive      = ds.CaseSensitive;
                this.EnforceConstraints = ds.EnforceConstraints;
                this.Merge(ds, false, System.Data.MissingSchemaAction.Add);
                this.InitVars();
            }
            else
            {
                this.InitClass();
            }
            this.GetSerializationData(info, context);
            System.ComponentModel.CollectionChangeEventHandler schemaChangedHandler = new System.ComponentModel.CollectionChangeEventHandler(this.SchemaChanged);
            this.Tables.CollectionChanged    += schemaChangedHandler;
            this.Relations.CollectionChanged += schemaChangedHandler;
        }
Пример #28
0
 /// <summary>
 /// 更新符合条件的一条Xml记录
 /// </summary>
 /// <param name="strFileName"></param>
 /// <param name="dt_New"></param>
 /// <param name="dt_OLD"></param>
 /// <returns></returns>
 public static bool UpdateXmlRow(string strFileName, DataTable dt_New, DataTable dt_OLD)
 {
     try
     {
         //同上一方法
         string  strXDDFileName = strFileName.Substring(0, strFileName.IndexOf(".")) + ".xsd";
         DataSet ds             = new DataSet();
         //读xml架构,关系到列的数据类型
         ds.ReadXmlSchema(GetXmlFullPath(strXDDFileName));
         ds.ReadXml(GetXmlFullPath(strFileName));
         //先判断行数
         if (ds.Tables[0].Rows.Count > 0)
         {
             for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
             {
                 //如果当前记录为符合Where条件的记录
                 if (ds.Tables[0].Select("ID =" + dt_OLD.Rows[0]["ID"].ToString()).Length != 0)
                 {
                     //循环给找到行的各列赋新值
                     foreach (DataColumn dataColumn in ds.Tables[0].Columns)
                     {
                         ds.Tables[0].Select("ID =" + dt_OLD.Rows[0]["ID"].ToString())[0][dataColumn.ToString()] = dt_New.Rows[0][dataColumn.ToString()].ToString();
                     }
                     //更新DataSet
                     ds.AcceptChanges();
                     //重新写入XML文件
                     ds.WriteXml(GetXmlFullPath(strFileName));
                     return(true);
                 }
             }
         }
         return(false);
     }
     catch (Exception ex)
     {
         return(false);
     }
 }
Пример #29
0
        public virtual DataTable GetSchemaTable()
        {
            DataSet s = new DataSet();

            s.Locale = System.Globalization.CultureInfo.CurrentCulture;
            s.ReadXmlSchema(new System.IO.StringReader(shemaTableSchema));
            DataTable t = s.Tables[0];

            if (Fields != null)
            {
                for (int i = 0; i < Fields.Count; i++)
                {
                    DataRow row = t.NewRow();
                    row["ColumnName"]    = Fields[i].GetName();
                    row["ColumnOrdinal"] = i;

                    Type type = this.GetFieldType(i);
                    if (type.IsGenericType &&
                        type.GetGenericTypeDefinition() == typeof(System.Nullable <int>).GetGenericTypeDefinition())
                    {
                        type = type.GetGenericArguments()[0];
                    }
                    row["DataType"] = Fields[i].GetPropertyType();
                    //row["DataTypeName"] = this.GetDataTypeName(i);
                    row["ColumnSize"]  = -1;
                    row["AllowDBNull"] = Fields[i].AllowDBNull();
                    t.Rows.Add(row);
                }
            }

            return(t);
            //var dt = new DataTable();
            //foreach (ChoObjectDataReaderProperty field in Fields)
            //{
            //    dt.Columns.Add(new DataColumn(field.GetName(), field.GetPropertyType()));
            //}
            //return dt;
        }
Пример #30
0
        protected vistaForm(SerializationInfo info, StreamingContext context)
        {
            string strSchema = ((string)(info.GetValue("XmlSchema", typeof(string))));

            if ((strSchema != null))
            {
                DataSet ds = new DataSet();
                ds.ReadXmlSchema(new XmlTextReader(new System.IO.StringReader(strSchema)));
                if ((ds.Tables["dbuser"] != null))
                {
                    this.Tables.Add(new dbuserDataTable(ds.Tables["dbuser"]));
                }
                if ((ds.Tables["dbaccess"] != null))
                {
                    this.Tables.Add(new dbaccessDataTable(ds.Tables["dbaccess"]));
                }
                if ((ds.Tables["dbdepartment"] != null))
                {
                    this.Tables.Add(new dbdepartmentDataTable(ds.Tables["dbdepartment"]));
                }
                this.DataSetName        = ds.DataSetName;
                this.Prefix             = ds.Prefix;
                this.Namespace          = ds.Namespace;
                this.Locale             = ds.Locale;
                this.CaseSensitive      = ds.CaseSensitive;
                this.EnforceConstraints = ds.EnforceConstraints;
                this.Merge(ds, false, System.Data.MissingSchemaAction.Add);
                this.InitVars();
            }
            else
            {
                this.InitClass();
            }
            this.GetSerializationData(info, context);
            System.ComponentModel.CollectionChangeEventHandler schemaChangedHandler = new System.ComponentModel.CollectionChangeEventHandler(this.SchemaChanged);
            this.Tables.CollectionChanged    += schemaChangedHandler;
            this.Relations.CollectionChanged += schemaChangedHandler;
        }
Пример #31
0
        public void RepeatableSimpleElement()
        {
            var ds = new DataSet();
            ds.ReadXmlSchema(new StringReader(
                @"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
                  <!-- empty -->
                  <xs:element name='Foo' type='FooType' />
                  <!-- defining externally to avoid being regarded as dataset element -->
                  <xs:complexType name='FooType'>
	                <xs:sequence>
		                <xs:element name='Bar' maxOccurs='2' />
	                </xs:sequence>
                  </xs:complexType>
                </xs:schema>"));
            AssertDataSet("012", ds, "NewDataSet", 2, 1);
            DataTable dt = ds.Tables[0];
            AssertDataTable("parent", dt, "Foo", 1, 0, 0, 1, 1, 1);
            AssertDataColumn("key", dt.Columns[0], "Foo_Id", false, true, 0, 1, "Foo_Id", MappingType.Hidden, typeof(int), DBNull.Value, string.Empty, -1, string.Empty, 0, string.Empty, false, true);

            dt = ds.Tables[1];
            AssertDataTable("repeated", dt, "Bar", 2, 0, 1, 0, 1, 0);
            AssertDataColumn("data", dt.Columns[0], "Bar_Column", false, false, 0, 1, "Bar_Column", MappingType.SimpleContent, typeof(string), DBNull.Value, string.Empty, -1, string.Empty, 0, string.Empty, false, false);
            AssertDataColumn("refkey", dt.Columns[1], "Foo_Id", true, false, 0, 1, "Foo_Id", MappingType.Hidden, typeof(int), DBNull.Value, string.Empty, -1, string.Empty, 1, string.Empty, false, false);

            AssertDataRelation("rel", ds.Relations[0], "Foo_Bar", true, new string[] { "Foo_Id" }, new string[] { "Foo_Id" }, true, true);
        }
Пример #32
0
        public void ElementHasIdentityConstraint()
        {
            string constraints = @"
		<xs:key name='key'>
			<xs:selector xpath='./any/string_is_OK/R1'/>
			<xs:field xpath='Child2'/>
		</xs:key>
		<xs:keyref name='kref' refer='key'>
			<xs:selector xpath='.//R2'/>
			<xs:field xpath='Child2'/>
		</xs:keyref>";
            string xsbase = @"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:msdata='urn:schemas-microsoft-com:xml-msdata'>
	<xs:element name='DS' msdata:IsDataSet='true'>
		<xs:complexType>
			<xs:choice>
				<xs:element ref='R1' />
				<xs:element ref='R2' />
			</xs:choice>
		</xs:complexType>
		{0}
	</xs:element>
	<xs:element name='R1' type='RootType'>
	      {1}
	</xs:element>
	<xs:element name='R2' type='RootType'>
	</xs:element>
	<xs:complexType name='RootType'>
		<xs:choice>
			<xs:element name='Child1' type='xs:string'>
				{2}
			</xs:element>
			<xs:element name='Child2' type='xs:string' />
		</xs:choice>
		<xs:attribute name='Attr' type='xs:integer' />
	</xs:complexType>
</xs:schema>";

            // Constraints on DataSet element.
            // Note that in xs:key xpath is crazy except for the last step
            string xs = string.Format(xsbase, constraints, string.Empty, string.Empty);
            var ds = new DataSet();
            ds.ReadXmlSchema(new StringReader(xs));
            Assert.Equal(1, ds.Relations.Count);

            // Constraints on another global element - just ignored
            xs = string.Format(xsbase, string.Empty, constraints, string.Empty);
            ds = new DataSet();
            ds.ReadXmlSchema(new StringReader(xs));
            Assert.Equal(0, ds.Relations.Count);

            // Constraints on local element - just ignored
            xs = string.Format(xsbase, string.Empty, string.Empty, constraints);
            ds = new DataSet();
            ds.ReadXmlSchema(new StringReader(xs));
            Assert.Equal(0, ds.Relations.Count);
        }
Пример #33
0
        public void PrefixedTargetNS()
        {
            string xs = @"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:msdata='urn:schemas-microsoft-com:xml-msdata' xmlns:x='urn:foo' targetNamespace='urn:foo' elementFormDefault='qualified'>
	<xs:element name='DS' msdata:IsDataSet='true'>
		<xs:complexType>
			<xs:choice>
				<xs:element ref='x:R1' />
				<xs:element ref='x:R2' />
			</xs:choice>
		</xs:complexType>
		<xs:key name='key'>
			<xs:selector xpath='./any/string_is_OK/x:R1'/>
			<xs:field xpath='x:Child2'/>
		</xs:key>
		<xs:keyref name='kref' refer='x:key'>
			<xs:selector xpath='.//x:R2'/>
			<xs:field xpath='x:Child2'/>
		</xs:keyref>
	</xs:element>
	<xs:element name='R3' type='x:RootType' />
	<xs:complexType name='extracted'>
		<xs:choice>
			<xs:element ref='x:R1' />
			<xs:element ref='x:R2' />
		</xs:choice>
	</xs:complexType>
	<xs:element name='R1' type='x:RootType'>
		<xs:unique name='Rkey'>
			<xs:selector xpath='.//x:Child1'/>
			<xs:field xpath='.'/>
		</xs:unique>
		<xs:keyref name='Rkref' refer='x:Rkey'>
			<xs:selector xpath='.//x:Child2'/>
			<xs:field xpath='.'/>
		</xs:keyref>
	</xs:element>
	<xs:element name='R2' type='x:RootType'>
	</xs:element>
	<xs:complexType name='RootType'>
		<xs:choice>
			<xs:element name='Child1' type='xs:string'>
			</xs:element>
			<xs:element name='Child2' type='xs:string' />
		</xs:choice>
		<xs:attribute name='Attr' type='xs:integer' />
	</xs:complexType>
</xs:schema>";
            // No prefixes on tables and columns
            var ds = new DataSet();
            ds.ReadXmlSchema(new StringReader(xs));
            AssertDataSet("ds", ds, "DS", 3, 1);
            DataTable dt = ds.Tables[0];
            AssertDataTable("R3", dt, "R3", 3, 0, 0, 0, 0, 0);
            AssertDataColumn("col1", dt.Columns[0], "Attr", true, false, 0, 1, "Attr", MappingType.Attribute, typeof(long), DBNull.Value, string.Empty, -1, string.Empty, 0, string.Empty, false, false);
        }
Пример #34
0
 public void CloneCopy2()
 {
     var ds = new DataSet();
     ds.ReadXmlSchema(new StringReader(DataProvider.store));
     ds.Clone();
 }
Пример #35
0
        public void ReadTest1()
        {
            DataSet ds = CreateTestSet();

            StringWriter sw = new StringWriter();
            ds.WriteXmlSchema(sw);

            string schema = sw.ToString();

            // ReadXmlSchema()
            ds = new DataSet();
            ds.ReadXmlSchema(new XmlTextReader(schema, XmlNodeType.Document, null));
            ReadTest1Check(ds);

            // ReadXml() should also be the same
            ds = new DataSet();
            ds.ReadXml(new XmlTextReader(schema, XmlNodeType.Document, null));
            ReadTest1Check(ds);
        }
Пример #36
0
        public void Test5()
        {
            DataSet RegionDS = new DataSet();

            RegionDS.ReadXmlSchema(new StringReader(RegionXsd));
            XmlDataDocument DataDoc = new XmlDataDocument(RegionDS);
            DataDoc.Load(new StringReader(RegionXml));
            try
            {
                DataDoc.DocumentElement.AppendChild(DataDoc.DocumentElement.FirstChild);
                Assert.False(true);
            }
            catch (InvalidOperationException e)
            {
                Assert.Equal(typeof(InvalidOperationException), e.GetType());
                Assert.Equal("Please set DataSet.EnforceConstraints == false before trying to edit XmlDataDocument using XML operations.", e.Message);
                DataDoc.DataSet.EnforceConstraints = false;
            }
            XmlElement newNode = DataDoc.CreateElement("Region");
            XmlElement newChildNode = DataDoc.CreateElement("RegionID");
            newChildNode.InnerText = "64";
            XmlElement newChildNode2 = DataDoc.CreateElement("RegionDescription");
            newChildNode2.InnerText = "test node";
            newNode.AppendChild(newChildNode);
            newNode.AppendChild(newChildNode2);
            DataDoc.DocumentElement.AppendChild(newNode);
            TextWriter text = new StringWriter();

            //DataDoc.Save (text);
            DataDoc.DataSet.WriteXml(text);
            string TextString = text.ToString();
            string substring = TextString.Substring(0, TextString.IndexOf("\n"));
            TextString = TextString.Substring(TextString.IndexOf("\n") + 1);

            for (int i = 0; i < 21; i++)
            {
                substring = TextString.Substring(0, TextString.IndexOf("\n"));
                TextString = TextString.Substring(TextString.IndexOf("\n") + 1);
            }
            Assert.True(substring.IndexOf("  <Region>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf("\n"));
            TextString = TextString.Substring(TextString.IndexOf("\n") + 1);
            Assert.True(substring.IndexOf("    <RegionID>64</RegionID>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf("\n"));
            TextString = TextString.Substring(TextString.IndexOf("\n") + 1);
            Assert.True(substring.IndexOf("    <RegionDescription>test node</RegionDescription>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf("\n"));
            TextString = TextString.Substring(TextString.IndexOf("\n") + 1);
            Assert.True(substring.IndexOf("  </Region>") != -1);

            substring = TextString.Substring(0, TextString.Length);
            Assert.True(substring.IndexOf("</Root>") != -1);
        }
Пример #37
0
        public void Test2()
        {
            DataSet RegionDS = new DataSet();
            DataRow RegionRow;
            RegionDS.ReadXmlSchema(new StringReader(RegionXsd));
            Assert.Equal(1, RegionDS.Tables.Count);
            XmlDataDocument DataDoc = new XmlDataDocument(RegionDS);
            DataDoc.Load(new StringReader(RegionXml));

            RegionRow = RegionDS.Tables[0].Rows[0];

            RegionDS.AcceptChanges();
            RegionRow["RegionDescription"] = "Reeeeeaalllly Far East!";
            RegionDS.AcceptChanges();

            TextWriter text = new StringWriter();
            text.NewLine = "\n";
            DataDoc.Save(text);
            string TextString = text.ToString();
            string substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);

            //Assert.Equal ("<?xml version=\"1.0\" encoding=\"utf-16\" standalone=\"yes\"?>", substring);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.Equal("<Root>", substring);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("  <Region>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("    <RegionID>1</RegionID>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.Equal("    <RegionDescription>Reeeeeaalllly Far East!</RegionDescription>", substring);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("  </Region>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("  <Region>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("    <RegionID>2</RegionID>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("    <RegionDescription>Western") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("   </RegionDescription>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("  </Region>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("  <Region>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("    <RegionID>3</RegionID>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("    <RegionDescription>Northern") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("   </RegionDescription>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("  </Region>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("  <Region>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("    <RegionID>4</RegionID>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("    <RegionDescription>Southern") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("   </RegionDescription>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("  </Region>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("  <MoreData>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("    <Column1>12</Column1>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("    <Column2>Hi There</Column2>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("  </MoreData>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("  <MoreData>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("    <Column1>12</Column1>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("    <Column2>Hi There</Column2>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("  </MoreData>") != -1);
        }
Пример #38
0
        public void NestedReferenceNotAllowed()
        {
            string xs = @"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:msdata='urn:schemas-microsoft-com:xml-msdata'>
	<xs:element name='Root' type='unusedType' msdata:IsDataSet='true'>
	</xs:element>
	<xs:complexType name='unusedType'>
		<xs:sequence>
			<xs:element name='Child' type='xs:string' />
		</xs:sequence>
	</xs:complexType>
	<xs:element name='Foo'>
		<xs:complexType>
			<xs:sequence>
				<xs:element ref='Root' />
			</xs:sequence>
		</xs:complexType>
	</xs:element>
</xs:schema>";

            // DataSet element cannot be converted into a DataTable.
            // (i.e. cannot be referenced in any other elements)
            var ds = new DataSet();
            Assert.Throws<ArgumentException>(() =>
           {
               ds.ReadXmlSchema(new StringReader(xs));
           });
        }
Пример #39
0
        public void TestSampleFileXPath()
        {
            var ds = new DataSet();
            ds.ReadXmlSchema(new StringReader(
                @"<?xml version=""1.0"" encoding=""utf-8"" ?>
                    <xs:schema targetNamespace=""http://neurosaudio.com/Tracks.xsd"" xmlns=""http://neurosaudio.com/Tracks.xsd"" xmlns:mstns=""http://neurosaudio.com/Tracks.xsd"" xmlns:xs=""http://www.w3.org/2001/XMLSchema"" xmlns:msdata=""urn:schemas-microsoft-com:xml-msdata"" elementFormDefault=""qualified"" id=""Tracks"">
	                    <xs:element name=""Tracks"">
		                    <xs:complexType>
			                    <xs:sequence>
				                    <xs:element name=""Track"" minOccurs=""0"" maxOccurs=""unbounded"">
					                    <xs:complexType>
						                    <xs:sequence>
							                    <xs:element name=""Title"" type=""xs:string"" />
							                    <xs:element name=""Artist"" type=""xs:string"" minOccurs=""0"" />
							                    <xs:element name=""Album"" type=""xs:string"" minOccurs=""0"" />
							                    <xs:element name=""Performer"" type=""xs:string"" minOccurs=""0"" />
							                    <xs:element name=""Sequence"" type=""xs:unsignedInt"" minOccurs=""0"" />
							                    <xs:element name=""Genre"" type=""xs:string"" minOccurs=""0"" />
							                    <xs:element name=""Comment"" type=""xs:string"" minOccurs=""0"" />
							                    <xs:element name=""Year"" type=""xs:string"" minOccurs=""0"" />
							                    <xs:element name=""Duration"" type=""xs:unsignedInt"" minOccurs=""0"" />
							                    <xs:element name=""Path"" type=""xs:string"" />
							                    <xs:element name=""DevicePath"" type=""xs:string"" minOccurs=""0"" />
							                    <xs:element name=""FileSize"" type=""xs:unsignedInt"" minOccurs=""0"" />
							                    <xs:element name=""Source"" type=""xs:string"" minOccurs=""0"" />
							                    <xs:element name=""FlashStatus"" type=""xs:unsignedInt"" />
							                    <xs:element name=""HDStatus"" type=""xs:unsignedInt"" />
						                    </xs:sequence>
						                    <xs:attribute name=""ID"" type=""xs:unsignedInt"" msdata:AutoIncrement=""true"" msdata:AutoIncrementSeed=""1"" />
					                    </xs:complexType>
				                    </xs:element>
			                    </xs:sequence>
		                    </xs:complexType>
		                    <xs:key name=""TrackPK"" msdata:PrimaryKey=""true"">
			                    <xs:selector xpath="".//mstns:Track"" />
			                    <xs:field xpath=""@ID"" />
		                    </xs:key>
	                    </xs:element>
                    </xs:schema>"));
        }
Пример #40
0
        public void SingleElementTreatmentDifference()
        {
            // This is one of the most complicated case. When the content
            // type particle of 'Root' element is a complex element, it
            // is DataSet element. Otherwise, it is just a data table.
            //
            // But also note that there is another test named
            // LocaleOnRootWithoutIsDataSet(), that tests if locale on
            // the (mere) data table modifies *DataSet's* locale.

            // Moreover, when the schema contains another element
            // (regardless of its schema type), the elements will
            // never be treated as a DataSet.
            string xsbase = @"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' id='hoge'>
	<xs:element name='Root'> <!-- When simple, it becomes table. When complex, it becomes DataSet -->
		<xs:complexType>
			<xs:choice>
				{0}
			</xs:choice>
		</xs:complexType>
	</xs:element>
</xs:schema>";

            string xsbase2 = @"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' id='hoge'>
	<xs:element name='Root'> <!-- When simple, it becomes table. When complex, it becomes DataSet -->
		<xs:complexType>
			<xs:choice>
				{0}
			</xs:choice>
		</xs:complexType>
	</xs:element>
	<xs:element name='more' type='xs:string' />
</xs:schema>";

            string simple = "<xs:element name='Child' type='xs:string' />";
            string complex = @"<xs:element name='Child'>
	<xs:complexType>
		<xs:attribute name='a1' />
		<xs:attribute name='a2' type='xs:integer' />
	</xs:complexType>
</xs:element>";
            string elref = "<xs:element ref='more' />";

            string xs2 = @"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' id='hoge'>
	<xs:element name='Root' type='RootType' />
	<xs:complexType name='RootType'>
		<xs:choice>
			<xs:element name='Child'>
				<xs:complexType>
					<xs:attribute name='a1' />
					<xs:attribute name='a2' type='xs:integer' />
				</xs:complexType>
			</xs:element>
		</xs:choice>
	</xs:complexType>
</xs:schema>";

            var ds = new DataSet();

            string xs = string.Format(xsbase, simple);
            ds.ReadXmlSchema(new StringReader(xs));
            AssertDataSet("simple", ds, "hoge", 1, 0);
            AssertDataTable("simple", ds.Tables[0], "Root", 1, 0, 0, 0, 0, 0);

            // reference to global complex type
            ds = new DataSet();
            ds.ReadXmlSchema(new StringReader(xs2));
            AssertDataSet("external complexType", ds, "hoge", 2, 1);
            AssertDataTable("external Tab1", ds.Tables[0], "Root", 1, 0, 0, 1, 1, 1);
            AssertDataTable("external Tab2", ds.Tables[1], "Child", 3, 0, 1, 0, 1, 0);

            // xsbase2 + complex -> datatable
            ds = new DataSet();
            xs = string.Format(xsbase2, complex);
            ds.ReadXmlSchema(new StringReader(xs));
            AssertDataSet("complex", ds, "hoge", 2, 1);
            AssertDataTable("complex", ds.Tables[0], "Root", 1, 0, 0, 1, 1, 1);
            DataTable dt = ds.Tables[1];
            AssertDataTable("complex", dt, "Child", 3, 0, 1, 0, 1, 0);
            AssertDataColumn("a1", dt.Columns["a1"], "a1", true, false, 0, 1, "a1", MappingType.Attribute, typeof(string), DBNull.Value, string.Empty, -1, string.Empty, /*0*/-1, string.Empty, false, false);
            AssertDataColumn("a2", dt.Columns["a2"], "a2", true, false, 0, 1, "a2", MappingType.Attribute, typeof(long), DBNull.Value, string.Empty, -1, string.Empty, /*1*/-1, string.Empty, false, false);
            AssertDataColumn("Root_Id", dt.Columns[2], "Root_Id", true, false, 0, 1, "Root_Id", MappingType.Hidden, typeof(int), DBNull.Value, string.Empty, -1, string.Empty, 2, string.Empty, false, false);

            // xsbase + complex -> dataset
            ds = new DataSet();
            xs = string.Format(xsbase, complex);
            ds.ReadXmlSchema(new StringReader(xs));
            AssertDataSet("complex", ds, "Root", 1, 0);

            ds = new DataSet();
            xs = string.Format(xsbase2, elref);
            ds.ReadXmlSchema(new StringReader(xs));
            AssertDataSet("complex", ds, "hoge", 1, 0);
            AssertDataTable("complex", ds.Tables[0], "Root", 1, 0, 0, 0, 0, 0);
        }
Пример #41
0
        public void SimpleTypeComponentsIgnored()
        {
            string xs = @"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
	<xs:element name='Root' type='xs:string'/>
	<xs:attribute name='Attr' type='xs:string'/>
</xs:schema>";

            var ds = new DataSet();
            ds.ReadXmlSchema(new StringReader(xs));
            // nothing is imported.
            AssertDataSet("ds", ds, "NewDataSet", 0, 0);
        }
Пример #42
0
        public void TestAnnotatedRelation2()
        {
            var ds = new DataSet();
            ds.ReadXmlSchema(new StringReader(
                @"<xs:schema xmlns:xs=""http://www.w3.org/2001/XMLSchema"" xmlns:msdata=""urn:schemas-microsoft-com:xml-msdata"">
                <!-- just modified MSDN example -->
                <xs:element name=""ds"" msdata:IsDataSet=""true"">
                 <xs:complexType>
                  <xs:choice maxOccurs=""unbounded"">
                   <xs:element name=""p"">
                    <xs:complexType>
                     <xs:sequence>
                       <xs:element name=""pk"" type=""xs:string"" />
                       <xs:element name=""name"" type=""xs:string"" />
                       <xs:element name=""c"">
                          <xs:annotation>
                           <xs:appinfo>
                            <msdata:Relationship name=""rel"" 
                             msdata:parent=""p"" 
                             msdata:child=""c"" 
                             msdata:parentkey=""pk"" 
                             msdata:childkey=""fk""/>
                           </xs:appinfo>
                          </xs:annotation>
                          <xs:complexType>
                            <xs:sequence>
                             <xs:element name=""fk"" type=""xs:string"" />
                             <xs:element name=""count"" type=""xs:int"" />
                            </xs:sequence>
                         </xs:complexType>
                       </xs:element>
                     </xs:sequence>
                    </xs:complexType>
                   </xs:element>
                  </xs:choice>
                 </xs:complexType>
                </xs:element>
                </xs:schema>"));
            AssertDataSet("102", ds, "ds", 2, 1);
            DataTable dt = ds.Tables[0];
            AssertDataTable("parent_table", dt, "p", 2, 0, 0, 1, 0, 0);
            AssertDataColumn("pk", dt.Columns[0], "pk", false, false, 0, 1, "pk", MappingType.Element, typeof(string), DBNull.Value, string.Empty, -1, string.Empty, 0, string.Empty, false, false);

            dt = ds.Tables[1];
            AssertDataTable("child_table", dt, "c", 2, 0, 1, 0, 0, 0);
            AssertDataColumn("fk", dt.Columns[0], "fk", false, false, 0, 1, "fk", MappingType.Element, typeof(string), DBNull.Value, string.Empty, -1, string.Empty, 0, string.Empty, false, false);

            AssertDataRelation("rel", ds.Relations[0], "rel", true, new string[] { "pk" }, new string[] { "fk" }, false, false);
        }
Пример #43
0
        public void RelationFromSchema()
        {
            DataSet Set = new DataSet();
            Set.ReadXmlSchema(new StringReader(DataProvider.store));
            DataTable Table = Set.Tables[0];

            Assert.False(Table.CaseSensitive);
            Assert.Equal(1, Table.ChildRelations.Count);
            Assert.Equal(0, Table.ParentRelations.Count);
            Assert.Equal(1, Table.Constraints.Count);
            Assert.Equal(1, Table.PrimaryKey.Length);
            Assert.Equal(0, Table.Rows.Count);
            Assert.Equal("bookstore", Table.TableName);
            Assert.Equal(1, Table.Columns.Count);

            DataRelation Relation = Table.ChildRelations[0];
            Assert.Equal(1, Relation.ChildColumns.Length);
            Assert.Equal("bookstore_book", Relation.ChildKeyConstraint.ConstraintName);
            Assert.Equal(1, Relation.ChildKeyConstraint.Columns.Length);
            Assert.Equal("book", Relation.ChildTable.TableName);
            Assert.Equal("NewDataSet", Relation.DataSet.DataSetName);
            Assert.Equal(0, Relation.ExtendedProperties.Count);
            Assert.True(Relation.Nested);
            Assert.Equal(1, Relation.ParentColumns.Length);
            Assert.Equal("Constraint1", Relation.ParentKeyConstraint.ConstraintName);
            Assert.Equal("bookstore", Relation.ParentTable.TableName);
            Assert.Equal("bookstore_book", Relation.RelationName);

            Table = Set.Tables[1];

            Assert.False(Table.CaseSensitive);
            Assert.Equal(1, Table.ChildRelations.Count);
            Assert.Equal(1, Table.ParentRelations.Count);
            Assert.Equal(2, Table.Constraints.Count);
            Assert.Equal(1, Table.PrimaryKey.Length);
            Assert.Equal(0, Table.Rows.Count);
            Assert.Equal("book", Table.TableName);
            Assert.Equal(5, Table.Columns.Count);

            Relation = Table.ChildRelations[0];
            Assert.Equal(1, Relation.ChildColumns.Length);
            Assert.Equal("book_author", Relation.ChildKeyConstraint.ConstraintName);
            Assert.Equal(1, Relation.ChildKeyConstraint.Columns.Length);
            Assert.Equal("author", Relation.ChildTable.TableName);
            Assert.Equal("NewDataSet", Relation.DataSet.DataSetName);
            Assert.Equal(0, Relation.ExtendedProperties.Count);
            Assert.True(Relation.Nested);
            Assert.Equal(1, Relation.ParentColumns.Length);
            Assert.Equal("Constraint1", Relation.ParentKeyConstraint.ConstraintName);
            Assert.Equal("book", Relation.ParentTable.TableName);
            Assert.Equal("book_author", Relation.RelationName);

            Table = Set.Tables[2];
            Assert.False(Table.CaseSensitive);
            Assert.Equal(0, Table.ChildRelations.Count);
            Assert.Equal(1, Table.ParentRelations.Count);
            Assert.Equal(1, Table.Constraints.Count);
            Assert.Equal(0, Table.PrimaryKey.Length);
            Assert.Equal(0, Table.Rows.Count);
            Assert.Equal("author", Table.TableName);
            Assert.Equal(3, Table.Columns.Count);
        }
Пример #44
0
        // 001-004
        public void TestSampleFileNoTables()
        {
            var ds = new DataSet();
            ds.ReadXmlSchema(new StringReader(@"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'><!-- empty --></xs:schema>"));
            AssertDataSet("001", ds, "NewDataSet", 0, 0);

            ds = new DataSet();
            ds.ReadXmlSchema(new StringReader(@"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'><xs:element name='foo' /></xs:schema>"));
            AssertDataSet("002", ds, "NewDataSet", 0, 0);

            ds = new DataSet();
            ds.ReadXmlSchema(new StringReader(
                @"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
                    <xs:element name='foo' type='xs:integer' />
                    <xs:element name='bar' type='xs:string' />
                </xs:schema>"));
            AssertDataSet("003", ds, "NewDataSet", 0, 0);

            ds = new DataSet();
            ds.ReadXmlSchema(new StringReader(
                @"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
                    <xs:element name='foo' type='st' />
                    <xs:simpleType name='st'>
                      <xs:restriction base='xs:string'>
                        <xs:maxLength value='5' />
                      </xs:restriction>
                    </xs:simpleType>
                </xs:schema>"));
            AssertDataSet("004", ds, "NewDataSet", 0, 0);
        }
Пример #45
0
 protected myTypedDataSet(SerializationInfo info, StreamingContext context)
 {
     string strSchema = ((string)(info.GetValue("XmlSchema", typeof(string))));
     if ((strSchema != null))
     {
         var ds = new DataSet();
         ds.ReadXmlSchema(new XmlTextReader(new StringReader(strSchema)));
         if ((ds.Tables["Order Details"] != null))
         {
             Tables.Add(new Order_DetailsDataTable(ds.Tables["Order Details"]));
         }
         if ((ds.Tables["Orders"] != null))
         {
             Tables.Add(new OrdersDataTable(ds.Tables["Orders"]));
         }
         DataSetName = ds.DataSetName;
         Prefix = ds.Prefix;
         Namespace = ds.Namespace;
         Locale = ds.Locale;
         CaseSensitive = ds.CaseSensitive;
         EnforceConstraints = ds.EnforceConstraints;
         Merge(ds, false, MissingSchemaAction.Add);
         InitVars();
     }
     else
     {
         InitClass();
     }
     GetSerializationData(info, context);
     CollectionChangeEventHandler schemaChangedHandler = new CollectionChangeEventHandler(SchemaChanged);
     Tables.CollectionChanged += schemaChangedHandler;
     Relations.CollectionChanged += schemaChangedHandler;
 }
Пример #46
0
        public void UnusedComplexTypesIgnored()
        {
            string xs = @"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' id='hoge'>
	<xs:element name='Root'>
		<xs:complexType>
			<xs:sequence>
				<xs:element name='Child' type='xs:string' />
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:complexType name='unusedType'>
		<xs:sequence>
			<xs:element name='Orphan' type='xs:string' />
		</xs:sequence>
	</xs:complexType>
</xs:schema>";

            var ds = new DataSet();
            ds.ReadXmlSchema(new StringReader(xs));
            // Here "unusedType" table is never imported.
            AssertDataSet("ds", ds, "hoge", 1, 0);
            AssertDataTable("dt", ds.Tables[0], "Root", 1, 0, 0, 0, 0, 0);
        }
Пример #47
0
        public void Test4()
        {
            DataSet RegionDS = new DataSet();

            RegionDS.ReadXmlSchema(new StringReader(RegionXsd));
            XmlDataDocument DataDoc = new XmlDataDocument(RegionDS);
            DataDoc.Load(new StringReader(RegionXml));
            Assert.True(RegionDS.EnforceConstraints);
            DataTable table = DataDoc.DataSet.Tables["Region"];
            DataRow newRow = table.NewRow();
            newRow[0] = "new row";
            newRow[1] = "new description";

            table.Rows.Add(newRow);

            TextWriter text = new StringWriter();
            text.NewLine = "\n";
            DataDoc.Save(text);
            string TextString = text.ToString();
            string substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("<Root>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("  <Region>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("    <RegionID>1</RegionID>") != -1);

            substring = TextString.Substring(0, TextString.IndexOfAny(new[] { '\r', '\n' }));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            // Regardless of NewLine value, original xml contains CR
            // (but in the context of XML spec, it should be normalized)
            Assert.Equal("    <RegionDescription>Eastern", substring);

            substring = TextString.Substring(0, TextString.IndexOfAny(new[] { '\r', '\n' }));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.Equal("   </RegionDescription>", substring);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("  </Region>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("  <Region>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("    <RegionID>2</RegionID>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("    <RegionDescription>Western") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("   </RegionDescription>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("  </Region>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("  <Region>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("    <RegionID>3</RegionID>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("    <RegionDescription>Northern") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("   </RegionDescription>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("  </Region>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("  <Region>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("    <RegionID>4</RegionID>") != -1);

            substring = TextString.Substring(0, TextString.IndexOfAny(new[] { '\r', '\n' }));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            // Regardless of NewLine value, original xml contains CR
            // (but in the context of XML spec, it should be normalized)
            Assert.Equal("    <RegionDescription>Southern", substring);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("   </RegionDescription>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("  </Region>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("  <MoreData>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("    <Column1>12</Column1>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("    <Column2>Hi There</Column2>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("  </MoreData>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("  <MoreData>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("    <Column1>12</Column1>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("    <Column2>Hi There</Column2>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("  </MoreData>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("  <Region>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("    <RegionID>new row</RegionID>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("    <RegionDescription>new description</RegionDescription>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf(s_EOL));
            TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length);
            Assert.True(substring.IndexOf("  </Region>") != -1);

            substring = TextString.Substring(0, TextString.Length);
            Assert.True(substring.IndexOf("</Root>") != -1);
        }
Пример #48
0
        public void SuspiciousDataSetElement()
        {
            string schema = @"<?xml version='1.0'?>
<xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
	<xsd:attribute name='foo' type='xsd:string'/>
	<xsd:attribute name='bar' type='xsd:string'/>
	<xsd:complexType name='attRef'>
		<xsd:attribute name='att1' type='xsd:int'/>
		<xsd:attribute name='att2' type='xsd:string'/>
	</xsd:complexType>
	<xsd:element name='doc'>
		<xsd:complexType>
			<xsd:choice>
				<xsd:element name='elem' type='attRef'/>
			</xsd:choice>
		</xsd:complexType>
	</xsd:element>
</xsd:schema>";
            var ds = new DataSet();
            ds.ReadXmlSchema(new StringReader(schema));
            AssertDataSet("ds", ds, "doc", 1, 0);
            AssertDataTable("table", ds.Tables[0], "elem", 2, 0, 0, 0, 0, 0);
        }
Пример #49
0
        public void Test6()
        {
            DataSet RegionDS = new DataSet();

            RegionDS.ReadXmlSchema(new StringReader(RegionXsd));
            XmlDataDocument DataDoc = new XmlDataDocument(RegionDS);
            DataDoc.Load(new StringReader(RegionXml));
            DataDoc.DataSet.EnforceConstraints = false;

            XmlElement newNode = DataDoc.CreateElement("Region");
            XmlElement newChildNode = DataDoc.CreateElement("RegionID");

            newChildNode.InnerText = "64";
            XmlElement newChildNode2 = null;
            try
            {
                newChildNode2 = DataDoc.CreateElement("something else");
                Assert.False(true);
            }
            catch (XmlException)
            {
            }
            newChildNode2 = DataDoc.CreateElement("something_else");

            newChildNode2.InnerText = "test node";

            newNode.AppendChild(newChildNode);
            newNode.AppendChild(newChildNode2);
            DataDoc.DocumentElement.AppendChild(newNode);

            TextWriter text = new StringWriter();

            //DataDoc.Save (text);
            DataDoc.DataSet.WriteXml(text);
            string TextString = text.ToString();
            string substring = TextString.Substring(0, TextString.IndexOf("\n") - 1);
            TextString = TextString.Substring(TextString.IndexOf("\n") + 1);

            for (int i = 0; i < 21; i++)
            {
                substring = TextString.Substring(0, TextString.IndexOf("\n"));
                TextString = TextString.Substring(TextString.IndexOf("\n") + 1);
            }

            Assert.True(substring.IndexOf("  <Region>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf("\n"));
            TextString = TextString.Substring(TextString.IndexOf("\n") + 1);
            Assert.True(substring.IndexOf("    <RegionID>64</RegionID>") != -1);

            substring = TextString.Substring(0, TextString.IndexOf("\n"));
            TextString = TextString.Substring(TextString.IndexOf("\n") + 1);
            Assert.True(substring.IndexOf("  </Region>") != -1);

            substring = TextString.Substring(0, TextString.Length);
            Assert.True(substring.IndexOf("</Root>") != -1);
        }
Пример #50
0
        public void TestSampleFileComplexTables3()
        {
            var ds = new DataSet();
            ds.ReadXmlSchema(new StringReader(
                @"<!-- Modified w3ctests attQ014.xsd -->
                <xsd:schema xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" targetNamespace=""http://xsdtesting"" xmlns:x=""http://xsdtesting"">
	                <xsd:element name=""root"">
		                <xsd:complexType>
			                <xsd:sequence>
				                <xsd:element name=""e"">
					                <xsd:complexType>
						                <xsd:simpleContent>
							                <xsd:extension base=""xsd:decimal"">
								                <xsd:attribute name=""a"" type=""xsd:string""/>
							                </xsd:extension>
						                </xsd:simpleContent>
					                </xsd:complexType>
				                </xsd:element>
			                </xsd:sequence>
		                </xsd:complexType>
	                </xsd:element>
                </xsd:schema>"));
            AssertDataSet("013", ds, "root", 1, 0);

            DataTable dt = ds.Tables[0];
            AssertDataTable("root", dt, "e", 2, 0, 0, 0, 0, 0);
            AssertDataColumn("attr", dt.Columns[0], "a", true, false, 0, 1, "a", MappingType.Attribute, typeof(string), DBNull.Value, string.Empty, -1, string.Empty, 0, string.Empty, false, false);
            AssertDataColumn("simple", dt.Columns[1], "e_text", false, false, 0, 1, "e_text", MappingType.SimpleContent, typeof(decimal), DBNull.Value, string.Empty, -1, string.Empty, 1, string.Empty, false, false);
        }
Пример #51
0
        public void ReadXmlSchema()
        {
            var ds = new DataSet();
            ds.ReadXmlSchema(new StringReader(DataProvider.own_schema));

            Assert.Equal(2, ds.Tables.Count);
            DataTable Table = ds.Tables[0];
            Assert.Equal("test_table", Table.TableName);
            Assert.Equal("", Table.Namespace);
            Assert.Equal(2, Table.Columns.Count);
            Assert.Equal(0, Table.Rows.Count);
            Assert.False(Table.CaseSensitive);
            Assert.Equal(1, Table.Constraints.Count);
            Assert.Equal("", Table.Prefix);

            Constraint cons = Table.Constraints[0];
            Assert.Equal("Constraint1", cons.ConstraintName.ToString());
            Assert.Equal("Constraint1", cons.ToString());

            DataColumn column = Table.Columns[0];
            Assert.True(column.AllowDBNull);
            Assert.False(column.AutoIncrement);
            Assert.Equal(0L, column.AutoIncrementSeed);
            Assert.Equal(1L, column.AutoIncrementStep);
            Assert.Equal("test", column.Caption);
            Assert.Equal("Element", column.ColumnMapping.ToString());
            Assert.Equal("first", column.ColumnName);
            Assert.Equal("System.String", column.DataType.ToString());
            Assert.Equal("test_default_value", column.DefaultValue.ToString());
            Assert.False(column.DesignMode);
            Assert.Equal("", column.Expression);
            Assert.Equal(100, column.MaxLength);
            Assert.Equal("", column.Namespace);
            Assert.Equal(0, column.Ordinal);
            Assert.Equal("", column.Prefix);
            Assert.False(column.ReadOnly);
            Assert.True(column.Unique);

            DataColumn column2 = Table.Columns[1];
            Assert.True(column2.AllowDBNull);
            Assert.False(column2.AutoIncrement);
            Assert.Equal(0L, column2.AutoIncrementSeed);
            Assert.Equal(1L, column2.AutoIncrementStep);
            Assert.Equal("second", column2.Caption);
            Assert.Equal("Element", column2.ColumnMapping.ToString());
            Assert.Equal("second", column2.ColumnName);
            Assert.Equal("System.Data.SqlTypes.SqlGuid", column2.DataType.ToString());
            Assert.Equal(SqlGuid.Null, column2.DefaultValue);
            Assert.False(column2.DesignMode);
            Assert.Equal("", column2.Expression);
            Assert.Equal(-1, column2.MaxLength);
            Assert.Equal("", column2.Namespace);
            Assert.Equal(1, column2.Ordinal);
            Assert.Equal("", column2.Prefix);
            Assert.False(column2.ReadOnly);
            Assert.False(column2.Unique);

            DataTable Table2 = ds.Tables[1];
            Assert.Equal("second_test_table", Table2.TableName);
            Assert.Equal("", Table2.Namespace);
            Assert.Equal(1, Table2.Columns.Count);
            Assert.Equal(0, Table2.Rows.Count);
            Assert.False(Table2.CaseSensitive);
            Assert.Equal(1, Table2.Constraints.Count);
            Assert.Equal("", Table2.Prefix);

            DataColumn column3 = Table2.Columns[0];
            Assert.True(column3.AllowDBNull);
            Assert.False(column3.AutoIncrement);
            Assert.Equal(0L, column3.AutoIncrementSeed);
            Assert.Equal(1L, column3.AutoIncrementStep);
            Assert.Equal("second_first", column3.Caption);
            Assert.Equal("Element", column3.ColumnMapping.ToString());
            Assert.Equal("second_first", column3.ColumnName);
            Assert.Equal("System.String", column3.DataType.ToString());
            Assert.Equal("default_value", column3.DefaultValue.ToString());
            Assert.False(column3.DesignMode);
            Assert.Equal("", column3.Expression);
            Assert.Equal(100, column3.MaxLength);
            Assert.Equal("", column3.Namespace);
            Assert.Equal(0, column3.Ordinal);
            Assert.Equal("", column3.Prefix);
            Assert.False(column3.ReadOnly);
            Assert.True(column3.Unique);
        }
Пример #52
0
        public void TestSampleFileComplexTables()
        {
            // Nested simple type element
            var ds = new DataSet();
            ds.ReadXmlSchema(new StringReader(
                @"<!-- nested tables, root references to complex type -->
                <xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' targetNamespace='urn:foo' xmlns:x='urn:foo'>
                  <xs:element name='uno' type='x:t' />
                  <xs:complexType name='t'>
                    <xs:sequence>
                      <xs:element name='des'>
                        <xs:complexType>
                          <xs:sequence>
                            <xs:element name='tres' />
                          </xs:sequence>
                        </xs:complexType>
                      </xs:element>
                    </xs:sequence>
                  </xs:complexType>
                </xs:schema>"));
            AssertDataSet("007", ds, "NewDataSet", 2, 1);
            DataTable dt = ds.Tables[0];
            AssertDataTable("tab1", dt, "uno", 1, 0, 0, 1, 1, 1);
            AssertDataColumn("id", dt.Columns[0], "uno_Id", false, true, 0, 1, "uno_Id", MappingType.Hidden, typeof(int), DBNull.Value, string.Empty, -1, "urn:foo", 0, string.Empty, false, true);

            dt = ds.Tables[1];
            AssertDataTable("tab2", dt, "des", 2, 0, 1, 0, 1, 0);
            AssertDataColumn("child", dt.Columns[0], "tres", false, false, 0, 1, "tres", MappingType.Element, typeof(string), DBNull.Value, string.Empty, -1, string.Empty, 0, string.Empty, false, false);
            AssertDataColumn("id", dt.Columns[1], "uno_Id", true, false, 0, 1, "uno_Id", MappingType.Hidden, typeof(int), DBNull.Value, string.Empty, -1, string.Empty, 1, string.Empty, false, false);

            // External simple type element
            ds = new DataSet();
            ds.ReadXmlSchema(new StringReader(
                @"<!-- reference to external simple element -->
                <xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' targetNamespace='urn:foo' xmlns:x='urn:foo'>
                  <xs:element name='uno' type='x:t' />
                  <xs:element name='tres' type='xs:string' />
                  <xs:complexType name='t'>
                    <xs:sequence>
                      <xs:element name='des'>
                        <xs:complexType>
                          <xs:sequence>
                            <xs:element ref='x:tres' />
                          </xs:sequence>
                        </xs:complexType>
                      </xs:element>
                    </xs:sequence>
                  </xs:complexType>
                </xs:schema>"));
            AssertDataSet("008", ds, "NewDataSet", 2, 1);
            dt = ds.Tables[0];
            AssertDataTable("tab1", dt, "uno", 1, 0, 0, 1, 1, 1);
            AssertDataColumn("id", dt.Columns[0], "uno_Id", false, true, 0, 1, "uno_Id", MappingType.Hidden, typeof(int), DBNull.Value, string.Empty, -1, "urn:foo", 0, string.Empty, false, true);

            dt = ds.Tables[1];
            AssertDataTable("tab2", dt, "des", 2, 0, 1, 0, 1, 0);
            AssertDataColumn("child", dt.Columns[0], "tres", false, false, 0, 1, "tres", MappingType.Element, typeof(string), DBNull.Value, string.Empty, -1, "urn:foo", 0, string.Empty, false, false);
            AssertDataColumn("id", dt.Columns[1], "uno_Id", true, false, 0, 1, "uno_Id", MappingType.Hidden, typeof(int), DBNull.Value, string.Empty, -1, string.Empty, 1, string.Empty, false, false);
        }
Пример #53
0
        public void TestSampleFileSimpleTables()
        {
            var ds = new DataSet();
            ds.ReadXmlSchema(new StringReader(
                @"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
                <xs:element name='foo' type='ct' />
                <xs:complexType name='ct'>
                  <xs:simpleContent>
                    <xs:extension base='xs:integer'>
                      <xs:attribute name='attr' />
                    </xs:extension>
                  </xs:simpleContent>
                </xs:complexType>
                </xs:schema>"));
            AssertDataSet("005", ds, "NewDataSet", 1, 0);
            DataTable dt = ds.Tables[0];
            AssertDataTable("tab", dt, "foo", 2, 0, 0, 0, 0, 0);
            AssertDataColumn("attr", dt.Columns[0], "attr", true, false, 0, 1, "attr", MappingType.Attribute, typeof(string), DBNull.Value, string.Empty, -1, string.Empty, 0, string.Empty, false, false);
            AssertDataColumn("text", dt.Columns[1], "foo_text", false, false, 0, 1, "foo_text", MappingType.SimpleContent, typeof(long), DBNull.Value, string.Empty, -1, string.Empty, 1, string.Empty, false, false);

            ds = new DataSet();
            ds.ReadXmlSchema(new StringReader(
                @"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
                    <xs:element name='foo' type='st' />
                    <xs:complexType name='st'>
                      <xs:attribute name='att1' />
                      <xs:attribute name='att2' type='xs:int' default='2' />
                    </xs:complexType>
                </xs:schema>"));
            AssertDataSet("006", ds, "NewDataSet", 1, 0);
            dt = ds.Tables[0];
            AssertDataTable("tab", dt, "foo", 2, 0, 0, 0, 0, 0);
            AssertDataColumn("att1", dt.Columns["att1"], "att1", true, false, 0, 1, "att1", MappingType.Attribute, typeof(string), DBNull.Value, string.Empty, -1, string.Empty, /*0*/-1, string.Empty, false, false);
            AssertDataColumn("att2", dt.Columns["att2"], "att2", true, false, 0, 1, "att2", MappingType.Attribute, typeof(int), 2, string.Empty, -1, string.Empty, /*1*/-1, string.Empty, false, false);
        }
Пример #54
0
        public void IsDataSetOnLocalElementIgnored()
        {
            string xsbase = @"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:msdata='urn:schemas-microsoft-com:xml-msdata'>
	<xs:element name='Root' type='unusedType'>
	</xs:element>
	<xs:complexType name='unusedType'>
		<xs:sequence>
			<xs:element name='Child' type='xs:string' msdata:IsDataSet='True' />
		</xs:sequence>
	</xs:complexType>
</xs:schema>";

            // msdata:IsDataSet does not affect even if the value is invalid
            string xs = string.Format(xsbase, "true");

            var ds = new DataSet();
            ds.ReadXmlSchema(new StringReader(xs));
            // Child should not be regarded as DataSet element
            AssertDataSet("ds", ds, "NewDataSet", 1, 0);
        }
Пример #55
0
        public void XmlLoadTest()
        {
            var ds = new DataSet();

            ds.ReadXmlSchema(new StringReader(
                @"<?xml version=""1.0"" standalone=""yes""?>
                    <xs:schema id=""NewDataSet"" xmlns="""" xmlns:xs=""http://www.w3.org/2001/XMLSchema"" xmlns:msdata=""urn:schemas-microsoft-com:xml-msdata"">
                      <xs:element name=""NewDataSet"" msdata:IsDataSet=""true"" msdata:MainDataTable=""DESC"" msdata:UseCurrentLocale=""true"">
                        <xs:complexType>
                          <xs:choice minOccurs=""0"" maxOccurs=""unbounded"">
                            <xs:element name=""DESC"">
                              <xs:complexType>
                                <xs:sequence>
                                  <xs:element name=""ColumnName"" msdata:ReadOnly=""true"" type=""xs:string"" minOccurs=""0"" />
                                  <xs:element name=""DataType"" msdata:DataType=""System.Type, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"" msdata:ReadOnly=""true"" type=""xs:string"" minOccurs=""0"" />
                                  <xs:element name=""IsAutoIncrement"" msdata:ReadOnly=""true"" type=""xs:boolean"" minOccurs=""0"" />
                                  <xs:element name=""AllowDBNull"" msdata:ReadOnly=""true"" type=""xs:boolean"" minOccurs=""0"" />
                                  <xs:element name=""IsReadOnly"" msdata:ReadOnly=""true"" type=""xs:boolean"" minOccurs=""0"" />
                                  <xs:element name=""IsKey"" msdata:ReadOnly=""true"" type=""xs:boolean"" minOccurs=""0"" />
                                  <xs:element name=""IsUnique"" msdata:ReadOnly=""true"" type=""xs:boolean"" minOccurs=""0"" />
                                  <xs:element name=""ColumnSize"" msdata:ReadOnly=""true"" type=""xs:int"" minOccurs=""0"" />
                                  <xs:element name=""ColumnNumber"" msdata:ReadOnly=""true"" type=""xs:int"" minOccurs=""0"" />
                                  <xs:element name=""Summary"" type=""xs:boolean"" minOccurs=""0"" />
                                  <xs:element name=""Print"" type=""xs:boolean"" minOccurs=""0"" />
                                </xs:sequence>
                              </xs:complexType>
                            </xs:element>
                          </xs:choice>
                        </xs:complexType>
                        <xs:unique name=""Constraint1"">
                          <xs:selector xpath="".//DESC"" />
                          <xs:field xpath=""ColumnName"" />
                        </xs:unique>
                      </xs:element>
                    </xs:schema>"));

            ds.ReadXml(new StringReader(
                @"<?xml version=""1.0"" standalone=""yes""?>
                    <DocumentElement>
                      <DESC>
                        <ColumnName>ColumnName</ColumnName>
                        <DataType>System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</DataType>
                        <IsAutoIncrement>false</IsAutoIncrement>
                        <AllowDBNull>true</AllowDBNull>
                        <IsReadOnly>true</IsReadOnly>
                        <IsKey>false</IsKey>
                        <IsUnique>false</IsUnique>
                        <ColumnSize>0</ColumnSize>
                      </DESC>
                      <DESC>
                        <ColumnName>DataType</ColumnName>
                        <DataType>System.Type, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</DataType>
                        <IsAutoIncrement>false</IsAutoIncrement>
                        <AllowDBNull>true</AllowDBNull>
                        <IsReadOnly>true</IsReadOnly>
                        <IsKey>false</IsKey>
                        <IsUnique>false</IsUnique>
                        <ColumnSize>0</ColumnSize>
                      </DESC>
                      <DESC>
                        <ColumnName>IsAutoIncrement</ColumnName>
                        <DataType>System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</DataType>
                        <IsAutoIncrement>false</IsAutoIncrement>
                        <AllowDBNull>true</AllowDBNull>
                        <IsReadOnly>true</IsReadOnly>
                        <IsKey>false</IsKey>
                        <IsUnique>false</IsUnique>
                        <ColumnSize>0</ColumnSize>
                      </DESC>
                      <DESC>
                        <ColumnName>AllowDBNull</ColumnName>
                        <DataType>System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</DataType>
                        <IsAutoIncrement>false</IsAutoIncrement>
                        <AllowDBNull>true</AllowDBNull>
                        <IsReadOnly>true</IsReadOnly>
                        <IsKey>false</IsKey>
                        <IsUnique>false</IsUnique>
                        <ColumnSize>0</ColumnSize>
                      </DESC>
                      <DESC>
                        <ColumnName>IsReadOnly</ColumnName>
                        <DataType>System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</DataType>
                        <IsAutoIncrement>false</IsAutoIncrement>
                        <AllowDBNull>true</AllowDBNull>
                        <IsReadOnly>true</IsReadOnly>
                        <IsKey>false</IsKey>
                        <IsUnique>false</IsUnique>
                        <ColumnSize>0</ColumnSize>
                      </DESC>
                      <DESC>
                        <ColumnName>IsKey</ColumnName>
                        <DataType>System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</DataType>
                        <IsAutoIncrement>false</IsAutoIncrement>
                        <AllowDBNull>true</AllowDBNull>
                        <IsReadOnly>true</IsReadOnly>
                        <IsKey>false</IsKey>
                        <IsUnique>false</IsUnique>
                        <ColumnSize>0</ColumnSize>
                      </DESC>
                      <DESC>
                        <ColumnName>IsUnique</ColumnName>
                        <DataType>System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</DataType>
                        <IsAutoIncrement>false</IsAutoIncrement>
                        <AllowDBNull>true</AllowDBNull>
                        <IsReadOnly>true</IsReadOnly>
                        <IsKey>false</IsKey>
                        <IsUnique>false</IsUnique>
                        <ColumnSize>0</ColumnSize>
                      </DESC>
                      <DESC>
                        <ColumnName>ColumnSize</ColumnName>
                        <DataType>System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</DataType>
                        <IsAutoIncrement>false</IsAutoIncrement>
                        <AllowDBNull>true</AllowDBNull>
                        <IsReadOnly>true</IsReadOnly>
                        <IsKey>false</IsKey>
                        <IsUnique>false</IsUnique>
                        <ColumnSize>0</ColumnSize>
                      </DESC>
                      <DESC>
                        <ColumnName>ColumnNumber</ColumnName>
                        <DataType>System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</DataType>
                        <IsAutoIncrement>false</IsAutoIncrement>
                        <AllowDBNull>true</AllowDBNull>
                        <IsReadOnly>true</IsReadOnly>
                        <IsKey>false</IsKey>
                        <IsUnique>false</IsUnique>
                        <ColumnSize>0</ColumnSize>
                      </DESC>
                      <DESC>
                        <ColumnName>Summary</ColumnName>
                        <DataType>System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</DataType>
                        <IsAutoIncrement>false</IsAutoIncrement>
                        <AllowDBNull>true</AllowDBNull>
                        <IsReadOnly>true</IsReadOnly>
                        <IsKey>false</IsKey>
                        <IsUnique>false</IsUnique>
                        <ColumnSize>0</ColumnSize>
                      </DESC>
                      <DESC>
                        <ColumnName>Print</ColumnName>
                        <DataType>System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</DataType>
                        <IsAutoIncrement>false</IsAutoIncrement>
                        <AllowDBNull>true</AllowDBNull>
                        <IsReadOnly>true</IsReadOnly>
                        <IsKey>false</IsKey>
                        <IsUnique>false</IsUnique>
                        <ColumnSize>0</ColumnSize>
                      </DESC>
                    </DocumentElement>"));
        }
Пример #56
0
        public void ReadConstraints()
        {
            var ds = new DataSet();
            ds.ReadXmlSchema(new StringReader(
                @"<?xml version=""1.0"" encoding=""utf-8""?>
                <xs:schema id=""NewDataSet"" xmlns="""" xmlns:xs=""http://www.w3.org/2001/XMLSchema"" xmlns:msdata=""urn:schemas-microsoft-com:xml-msdata"">
                  <xs:element name=""NewDataSet"" msdata:IsDataSet=""true"" msdata:Locale=""en-US"">
                    <xs:complexType>
                      <xs:choice maxOccurs=""unbounded"">
                        <xs:element name=""Table1"">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name=""col1"" type=""xs:int"" minOccurs=""0"" />
                            </xs:sequence>
                          </xs:complexType>
                        </xs:element>
                        <xs:element name=""Table2"">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name=""col1"" type=""xs:int"" minOccurs=""0"" />
                            </xs:sequence>
                          </xs:complexType>
                        </xs:element>
                      </xs:choice>
                    </xs:complexType>
                    <xs:unique name=""Constraint1"">
                      <xs:selector xpath="".//Table1"" />
                      <xs:field xpath=""col1"" />
                    </xs:unique>
                    <xs:keyref name=""fk1"" refer=""Constraint1"" msdata:ConstraintOnly=""true"">
                      <xs:selector xpath="".//Table2"" />
                      <xs:field xpath=""col1"" />
                    </xs:keyref>
                  </xs:element>
                </xs:schema>"));

            Assert.Equal(0, ds.Relations.Count);
            Assert.Equal(1, ds.Tables[0].Constraints.Count);
            Assert.Equal(1, ds.Tables[1].Constraints.Count);
            Assert.Equal("fk1", ds.Tables[1].Constraints[0].ConstraintName);
        }
Пример #57
0
        public void LocaleOnRootWithoutIsDataSet()
        {
            string xs = @"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:msdata='urn:schemas-microsoft-com:xml-msdata'>
	<xs:element name='Root' msdata:Locale='ja-JP'>
		<xs:complexType>
			<xs:sequence>
				<xs:element name='Child' type='xs:string' />
			</xs:sequence>
			<xs:attribute name='Attr' type='xs:integer' />
		</xs:complexType>
	</xs:element>
</xs:schema>";

            var ds = new DataSet();
            ds.ReadXmlSchema(new StringReader(xs));
            AssertDataSet("ds", ds, "NewDataSet", 1, 0);
            Assert.Equal("fi-FI", ds.Locale.Name); // DataSet's Locale comes from current thread
            DataTable dt = ds.Tables[0];
            AssertDataTable("dt", dt, "Root", 2, 0, 0, 0, 0, 0);
            Assert.Equal("ja-JP", dt.Locale.Name); // DataTable's Locale comes from msdata:Locale
            AssertDataColumn("col1", dt.Columns[0], "Attr", true, false, 0, 1, "Attr", MappingType.Attribute, typeof(long), DBNull.Value, string.Empty, -1, string.Empty, 0, string.Empty, false, false);
            AssertDataColumn("col2", dt.Columns[1], "Child", false, false, 0, 1, "Child", MappingType.Element, typeof(string), DBNull.Value, string.Empty, -1, string.Empty, 1, string.Empty, false, false);
        }
Пример #58
0
        public void ReadAnnotatedRelations_MultipleColumns()
        {
            var ds = new DataSet();
            ds.ReadXmlSchema(new StringReader(
                @"<?xml version=""1.0"" standalone=""yes""?>
                <xs:schema id=""NewDataSet"" xmlns="""" xmlns:xs=""http://www.w3.org/2001/XMLSchema"" xmlns:msdata=""urn:schemas-microsoft-com:xml-msdata"">
                  <xs:element name=""NewDataSet"" msdata:IsDataSet=""true"">
                    <xs:complexType>
                      <xs:choice maxOccurs=""unbounded"">
                        <xs:element name=""Table1"">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name=""col_x0020_1"" type=""xs:int"" minOccurs=""0"" />
                              <xs:element name=""col2"" type=""xs:int"" minOccurs=""0"" />
                            </xs:sequence>
                          </xs:complexType>
                        </xs:element>
                        <xs:element name=""Table2"">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name=""col1"" type=""xs:int"" minOccurs=""0"" />
                              <xs:element name=""col_x0020__x0020_2"" type=""xs:int"" minOccurs=""0"" />
                            </xs:sequence>
                          </xs:complexType>
                        </xs:element>
                      </xs:choice>
                    </xs:complexType>
                  </xs:element>
                  <xs:annotation>
                    <xs:appinfo>
                      <msdata:Relationship name=""rel"" msdata:parent=""Table1"" msdata:child=""Table2"" msdata:parentkey=""col_x0020_1 col2"" msdata:childkey=""col1 col_x0020__x0020_2"" />
                    </xs:appinfo>
                  </xs:annotation>
                </xs:schema>"));

            Assert.Equal(1, ds.Relations.Count);
            Assert.Equal("rel", ds.Relations[0].RelationName);
            Assert.Equal(2, ds.Relations[0].ParentColumns.Length);
            Assert.Equal(2, ds.Relations[0].ChildColumns.Length);
            Assert.Equal(0, ds.Tables[0].Constraints.Count);
            Assert.Equal(0, ds.Tables[1].Constraints.Count);

            AssertDataRelation("TestRel", ds.Relations[0], "rel", false, new string[] { "col 1", "col2" },
                    new string[] { "col1", "col  2" }, false, false);
        }
Пример #59
0
        public void IsDataSetAndTypeIgnored()
        {
            string xsbase = @"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:msdata='urn:schemas-microsoft-com:xml-msdata'>
	<xs:element name='Root' type='unusedType' msdata:IsDataSet='{0}'>
	</xs:element>
	<xs:complexType name='unusedType'>
		<xs:sequence>
			<xs:element name='Child' type='xs:string' />
		</xs:sequence>
	</xs:complexType>
</xs:schema>";

            // Even if a global element uses a complexType, it will be
            // ignored if the element has msdata:IsDataSet='true'
            string xs = string.Format(xsbase, "true");

            var ds = new DataSet();
            ds.ReadXmlSchema(new StringReader(xs));
            AssertDataSet("ds", ds, "Root", 0, 0); // name is "Root"

            // But when explicit msdata:IsDataSet value is "false", then
            // treat as usual.
            xs = string.Format(xsbase, "false");

            ds = new DataSet();
            ds.ReadXmlSchema(new StringReader(xs));
            AssertDataSet("ds", ds, "NewDataSet", 1, 0);
        }
Пример #60
0
        public void TestMoreThanOneRepeatableColumns()
        {
            var ds = new DataSet();
            ds.ReadXmlSchema(new StringReader(
                @"<xsd:schema xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">
	                <xsd:element name=""root"">
		                <xsd:complexType>
			                <xsd:sequence>
				                <xsd:element name=""x"" maxOccurs=""2"" />
				                <xsd:element ref=""y"" maxOccurs=""unbounded"" />
			                </xsd:sequence>
		                </xsd:complexType>
	                </xsd:element>
	                <xsd:element name=""y"" />
                </xsd:schema>"));
            AssertDataSet("014", ds, "NewDataSet", 3, 2);

            DataTable dt = ds.Tables[0];
            AssertDataTable("parent", dt, "root", 1, 0, 0, 2, 1, 1);
            AssertDataColumn("key", dt.Columns[0], "root_Id", false, true, 0, 1, "root_Id", MappingType.Hidden, typeof(int), DBNull.Value, string.Empty, -1, string.Empty, 0, string.Empty, false, true);

            dt = ds.Tables[1];
            AssertDataTable("repeated", dt, "x", 2, 0, 1, 0, 1, 0);
            AssertDataColumn("data_1", dt.Columns[0], "x_Column", false, false, 0, 1, "x_Column", MappingType.SimpleContent, typeof(string), DBNull.Value, string.Empty, -1, string.Empty, 0, string.Empty, false, false);
            AssertDataColumn("refkey_1", dt.Columns[1], "root_Id", true, false, 0, 1, "root_Id", MappingType.Hidden, typeof(int), DBNull.Value, string.Empty, -1, string.Empty, 1, string.Empty, false, false);

            dt = ds.Tables[2];
            AssertDataTable("repeated", dt, "y", 2, 0, 1, 0, 1, 0);
            AssertDataColumn("data", dt.Columns[0], "y_Column", false, false, 0, 1, "y_Column", MappingType.SimpleContent, typeof(string), DBNull.Value, string.Empty, -1, string.Empty, 0, string.Empty, false, false);
            AssertDataColumn("refkey", dt.Columns[1], "root_Id", true, false, 0, 1, "root_Id", MappingType.Hidden, typeof(int), DBNull.Value, string.Empty, -1, string.Empty, 1, string.Empty, false, false);

            AssertDataRelation("rel", ds.Relations[0], "root_x", true, new string[] { "root_Id" }, new string[] { "root_Id" }, true, true);

            AssertDataRelation("rel", ds.Relations[1], "root_y", true, new string[] { "root_Id" }, new string[] { "root_Id" }, true, true);
        }