/// <summary>Tworzy WierszTabeli na podstawie DataRow.</summary> public WierszTabeli(DataRow wiersz) { this.NazwaTabeli = wiersz.Table.TableName; DataColumnCollection kolumny = wiersz.Table.Columns; this.zawartosc = new Dictionary<string, object>(); this.typyKolumn = new Dictionary<string,Type>(); foreach (DataColumn kolumna in kolumny) { zawartosc.Add(kolumna.ColumnName, wiersz[kolumna]); typyKolumn.Add(kolumna.ColumnName, kolumna.DataType); } //Jeśli nie ma jeszcze odpowiedniego SchemaInfo w cache, dodajemy. //Nie robimy tego przed utworzeniem this.typyKolumn na wypadek gdybyśmy przekazywali informacje o SchemaTable. if (!tabele.Keys.Contains(NazwaTabeli) && NazwaTabeli != "SchemaTable") { List<WierszTabeli> schemaInfo = new BazaDanychSqlServerCE().getSchemaInfo(NazwaTabeli); tabele.Add(NazwaTabeli, new SchemaInfo(schemaInfo)); } }
/// <summary>Tworzy pusty WierszTabeli dla tabeli o podanej nazwie. /// Pobiera z bazy danych informacje o kolumnach i typach danych.</summary> public WierszTabeli(string nazwaTabeli) { //Sprawdzamy, czy mamy w cache if (!tabele.Keys.Contains(nazwaTabeli)) { List<WierszTabeli> schemaInfo = new BazaDanychSqlServerCE().getSchemaInfo(nazwaTabeli); if(schemaInfo==null) throw new ArgumentException("W bazie danych nie znaleziono tabeli o nazwie " + nazwaTabeli); tabele.Add(nazwaTabeli, new SchemaInfo(schemaInfo)); } string[] nazwy = tabele[nazwaTabeli].nazwyKolumn; this.NazwaTabeli = nazwaTabeli; this.zawartosc = new Dictionary<string, object>(); this.typyKolumn = tabele[nazwaTabeli].mapaTypow; for (int i = 0; i < nazwy.Length; i++) { this.zawartosc.Add(nazwy[i], null); } }