C# все соединения с базой данных в каталоге
В настоящее время у меня есть каталог со многими папками проекта, и каждая папка проекта содержит базу данных MysqlCE. Все эти базы данных имеют одинаковые таблицы; они идентичны, кроме данных. Моя цель - отобразить данные из таблиц _Users из каждой базы данных в дереве корневых каталогов.
У меня ограниченный опыт работы с C#, но я уверен, что справлюсь с небольшим исследованием. Тем не менее, я был бы признателен за любые указатели - поскольку папки проекта могут быть добавлены в будущем, мне понадобится приложение для "сканирования" баз данных при каждом запуске (если это вообще возможно).
Возможно ли такое динамическое соединение с базой данных в C#? Могу ли я использовать несколько источников данных вместе, скажем, в dataGridView?
2 ответа
Шаблон T4 может собрать полный путь к базам данных.
<#@ template debug="true" hostSpecific="true" #>
<#@ output extension=".cs" #>
<#@ Assembly Name="System.Core" #>
<#@ import namespace="System" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="System.Collections.Generic" #>
<#
string path = @"~\YourProjectPath";
List<string> dbFiles = GetDBFilesRecursive(path)
#>
//Your class code goes here
<#+
public List<string> GetDBFilesRecursive(string path)
{
List<string> files = new List<string>();
try
{
string[] fileEntries = Directory.GetFiles(path);
foreach (string fileName in fileEntries)
files.Add(fileName);
string [] subdirectoryEntries = Directory.GetDirectories(path);
foreach(string subdirectory in subdirectoryEntries)
files.AddRange(GetDBFilesRecursive(subdirectory));
}
catch(Exception e)
{
throw new Exception("exception occured in tt gen",e );
}
return files;
}
#>
Я думаю, у вас есть решение с несколькими проектами, и у каждого проекта есть файл.config, в котором размещается строка подключения. Вы можете создать общий файл.config для нескольких проектов в решении, но у него есть следующие проблемы: -config файл должен быть для каждого приложения, а что если в одном проекте вам нужно поместить что-то в файл.config, что нарушит другие проекты?, Вы можете использовать общий ресурс для нескольких проектов, но я думаю (я не уверен), если вы хотите изменить значения, вам придется снова компилировать. Тем не мение. Чтобы использовать файл ресурсов, вы можете увидеть это: Как использовать файл общих ресурсов между проектами в одном решении?
Вы также можете прочитать это: Размещение строк подключения к базе данных в файле.resx
А для общих файлов.config: общий конфигурационный файл в многопроектном решении?