验证数据库的模式

时间:2014-07-24 11:29:35

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

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

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

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

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

我正在寻找一个比#34更健全的答案;运行查询,如果失败则数据库无效"因为可能存在许多其他原因导致此类查询失败

1 个答案:

答案 0 :(得分:1)

EF中没有任何功能可以执行此操作。

您可以使用我的SQL CE Scripting 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有包含行的表,则存在差异)

我的库还有一个方法DetermineVersion(string fileName)来检查文件是否显示为有效的SQLCE文件。