【问题标题】:Validating the schema of a database验证数据库的架构
【发布时间】:2014-07-24 11:29:35
【问题描述】:

我有一个从 SQL Server CE 4.0 数据库文件中读取数据的应用程序。

用户可以在启动时选择数据库。每个数据库都有相同的架构,但数据不同。

鉴于我想确保他们不使用无效数据库(或将应用程序指向 word 文件或其他内容),是否可以验证所选数据库的架构?

过去我使用 ADO.net 来检查每个表中的每一列是否存在,但是当实体框架存在时,这似乎非常愚蠢。肯定有 EF 中的某些东西可以执行此操作,但我找不到。

我正在寻找比“运行查询,如果它失败则数据库无效”更复杂的答案,因为这样的查询失败可能有许多其他原因

【问题讨论】:

    标签: c# sql entity-framework visual-studio-2012 sql-server-ce


    【解决方案1】:

    EF 中没有执行此操作的功能。

    您可以使用我的 SQL CE 脚本 API,可通过 NuGet http://www.nuget.org/packages/ErikEJ.SqlCeScripting/ 获得

    第一次使用

    DataSet GetSchemaDataSet(GetAllTableNames());
    

    保存并添加到您的应用中。

    然后使用

    DataSet GetSchemaDataSet(GetAllTableNames());
    

    在加载的数据库上

    然后比较两个DataSet

    DataSet dsDifferences = new Dataset();
    dsOriginal.Merge(dsChanged);
    dsDifferences = dsOriginal.GetChanges();
    

    (如果 dsDifferences 有带行的表,则存在差异)

    我的库还有一个方法确定版本(字符串文件名)来检查文件是否是有效的 SQLCE 文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-15
      • 2015-08-13
      • 1970-01-01
      • 2018-09-07
      • 1970-01-01
      • 1970-01-01
      • 2012-04-16
      相关资源
      最近更新 更多