Почему таблицы SQL Server CE не отображаются в Query Analyzer?
Я извлекаю данные с помощью методов REST Web API на сервере и вставляю их в локальные таблицы SQL Server CE. Код клиента для вставки этих данных (который принимает извлеченные данные, которые были вставлены в общий список IEnumerable, заполняет временную таблицу DataTable и затем массово перемещает ее в базу данных SQL Server CE) выглядит следующим образом:
public static int BulkInsertDepartments(IEnumerable<Department> depts)
{
int countAdded = 0;
// Create temp table that mirrors Departments as a staging area for the data to be bulk copied
var dt = new DataTable();
dt.Columns.Add(new DataColumn("Id", typeof(Int32)));
dt.Columns.Add(new DataColumn("DeptNum", typeof(Int32)));
dt.Columns.Add(new DataColumn("DepartmentName", typeof(string)));
foreach (Department dept in depts)
{
try
{
dt.Rows.Add(dept.Id, dept.DeptNumber, dept.DeptName);
countAdded++;
}
catch (Exception ex)
{
MessageBox.Show(String.Format("deptId == {0}, deptNumber == {1}, deptName == {2} ({3})", dept.Id, dept.DeptNumber, dept.DeptName, ex.Message));
}
}
// Now move it all into the table
using (var bc = new SqlCeBulkCopy(dataSource))
{
bc.DestinationTableName = "Departments";
bc.WriteToServer(dt);
}
return countAdded;
}
Я получаю ожидаемое возвращаемое значение, но таблицы SQL Server CE не видны в Query Analyzer на портативном устройстве:
Как видно из приведенного выше примера, в Query Analyzer видны устаревшие таблицы SQL Server CE (HHSDB.SDF), но новых (HHS.SDF), по-видимому, не существует; но если база данных HHS.SDF или ее таблица [s] действительно не существует, не вызовет ли вызов метода WriteToServer()? На самом деле, не будет этой строки:
using (var bc = new SqlCeBulkCopy(dataSource))
... потерпеть неудачу даже до этого?
Итак, почему мои таблицы SQL Server CE невидимы для Query Analyzer? Примечание: это может быть связано с проблемой, обсуждаемой здесь; в этом случае это обозреватель серверов Visual Studio, который не может видеть таблицы.
Обратите также внимание, что Windows Explorer может видеть таблицу:
Я знаю, что таблицы действительно существуют на портативном устройстве, потому что следующий метод возвращает ненулевое значение, которое я ожидаю:
public static int getLocalInvItemsCount()
{
int recCount;
using (var conn = new SqlCeConnection(dataSource))
{
var cmd = conn.CreateCommand();
cmd.CommandText = "SELECT COUNT(*) FROM InventoryItems";
conn.Open();
cmd.Prepare();
recCount = (int)cmd.ExecuteScalar();
cmd.Dispose();
}
return recCount;
}
Как я могу просмотреть таблицы и их данные? Я хочу иметь возможность выполнять "проверки работоспособности", чтобы таблицы заполнялись, как и ожидалось, с помощью их содержимого.
Строка подключения:
private const string sdfPath = @"\Program Files\hhs\HHS.sdf";
private static readonly string dataSource = String.Format("Data Source={0}", sdfPath);