Почему таблицы 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);

0 ответов

Другие вопросы по тегам