为什么在查询分析器中看不到SQL Server CE表?

时间:2013-12-09 21:52:50

标签: datatable sql-server-ce ienumerable temp-tables server-explorer

我正在通过服务器上的Web API REST方法检索数据并将它们插入到本地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表:

enter image description here

正如您在上面的尖叫中所看到的,查询分析器中可以看到旧的SQL Server CE表(HHSDB.SDF),但新的(HHS.SDF)似乎不存在;但如果HHS.SDF数据库或其表[s]确实不存在,那么对WriteToServer()的调用是否会失败?实际上,不会这一行:

using (var bc = new SqlCeBulkCopy(dataSource))

......甚至在此之前就失败了?

那么为什么我的SQL Server CE表对查询分析器不可见?注意:这可能与讨论的问题here有关;在这种情况下,它是Visual Studio的服务器资源管理器,它似乎无法看到表。

另请注意,Windows资源管理器可以查看表格:

enter image description here

我知道这些表确实存在于手持设备上,因为以下方法返回了我期望的非零值:

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 个答案:

没有答案