/// <summary></summary> /// <param name="dataSource"></param> /// <param name="name"></param> /// <param name="config"></param> /// <param name="configurationStamp"></param> public PpsDataSetServerDefinition(PpsDataSource dataSource, string name, XElement config, DateTime configurationStamp) { this.dataSource = dataSource; this.application = dataSource.GetService <PpsApplication>(true); this.lua = dataSource.GetService <IDELuaEngine>(true).Lua; this.name = name; this.configurationStamp = configurationStamp; // get inherited list this.inheritedFrom = config.GetStrings("inherited", true); // get script list this.serverScripts = config.GetStrings("serverScripts", true); this.clientScripts = config.GetPaths("clientScripts", true); // parse data table schema foreach (var cur in config.Elements()) { if (cur.Name == xnTable) { var tableName = cur.GetAttribute("name", String.Empty); if (String.IsNullOrEmpty(tableName)) { throw new DEConfigurationException(cur, "table needs a name."); } // create a table var table = FindTable(tableName); if (table != null) { throw new DEConfigurationException(cur, $"table is not unique ('{tableName}')"); } Add(CreateTableDefinition(tableName, cur)); } else if (cur.Name == xnMeta) { metaInfo.Add(cur); } else if (cur.Name == xnAutoTag) { Add(new PpsDataSetAutoTagDefinition(this, cur.GetAttribute("name", String.Empty), cur.GetAttribute("tableName", String.Empty), cur.GetAttribute("columnName", String.Empty), cur.GetAttribute <PpsDataSetAutoTagMode>("mode", PpsDataSetAutoTagMode.First)) ); } } // foreach c } // ctor
/// <summary></summary> /// <param name="dataSource"></param> /// <param name="connection"></param> public PpsDataTransaction(PpsDataSource dataSource, IPpsConnectionHandle connection) { this.dataSource = dataSource ?? throw new ArgumentNullException(nameof(dataSource)); this.connection = connection ?? throw new ArgumentNullException(nameof(connection)); } // ctor