я должен создать модель класса, который будет содержать 4 класса - базы данных, схемы, таблицы и столбца, что-то вроде:Сложные иерархии классов
public class Database
{
public string Name { get; set; }
public List<Schema> Schemas { get; set; };
public List<Table> Tables { get; set; };
public List<Column> Columns { get; set; };
}
public class Schema
{
public string Name { get; set; }
public Database Database { get; set; }
public List<Table> Tables { get; set; };
}
public class Table
{
public string Name { get; set; }
public Schema Schema { get; set; }
public List<Column> Columns { get; set; };
}
public class Column
{
public string Name { get; set; }
public Schema Table { get; set; }
}
Ну, иерархия классов довольно легко: Database- > Схемы-> Таблицы-> Столбцы
Как видите, в базе данных есть списки «Таблицы» и «Столбцы», которые должны содержать все таблицы и все столбцы в базе данных.
Каков наилучший способ синхронизации базы данных. Таблицы - список и таблица Schema.Tables - список? А списки Database.Columns и Table.Columns перечислены? Должна быть возможность добавить новую таблицу в таблицу Database.Tables и увидеть новую таблицу в соответствующем списке Schema.Tables. Или добавить новую таблицу в таблицу Schema.Tables и посмотреть новую таблицу в списке Database.Tables.
Я могу определить свойство Schema.Tables как:
public List<Table> Tables
{
get { return Database.Tables.Where(p => p.Schema == this).ToList<Tables>(); }
}
Но в этом случае я добавить новую таблицу в Schema.Tables не будут появляться в списке Database.Tables.
Каков наилучший способ решить эту проблему?
PS. Извините за мой страшный английский!
Те должны быть 'ReadOnlyCollection's. – SLaks
Почему бы просто не использовать тип набора данных? его уже отформатированы с таблицами строк и столбцов. – Wobbles
https://msdn.microsoft.com/en-us/library/ms182142 – SLaks