Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 验证数据库的架构_C#_Sql_Entity Framework_Visual Studio 2012_Sql Server Ce - Fatal编程技术网

C# 验证数据库的架构

C# 验证数据库的架构,c#,sql,entity-framework,visual-studio-2012,sql-server-ce,C#,Sql,Entity Framework,Visual Studio 2012,Sql Server Ce,我有一个从SQLServerCE4.0数据库文件读取的应用程序 用户可以在启动时选择数据库。每个数据库都有相同的模式,但数据不同 考虑到我想确保他们不使用无效的数据库(或将应用程序指向word文件或其他东西),是否可以验证所选数据库的架构 在过去,我使用ADO.net检查每个表中的每一列是否存在,但当实体框架存在时,这看起来非常愚蠢。当然,EF中一定有某种东西可以实现这一点,但我找不到它 我正在寻找一个比“运行一个查询,如果它失败,那么数据库无效”更复杂的答案,因为可能还有很多其他原因导致这样的

我有一个从SQLServerCE4.0数据库文件读取的应用程序

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

考虑到我想确保他们不使用无效的数据库(或将应用程序指向word文件或其他东西),是否可以验证所选数据库的架构

在过去,我使用ADO.net检查每个表中的每一列是否存在,但当实体框架存在时,这看起来非常愚蠢。当然,EF中一定有某种东西可以实现这一点,但我找不到它


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

您可以使用我的SQL CE脚本API,可通过NuGet获得

首次使用

DataSet GetSchemaDataSet(GetAllTableNames());
并将其保存并添加到您的应用程序中

然后使用

DataSet GetSchemaDataSet(GetAllTableNames());
在加载的数据库上

然后比较这两个数据集

DataSet dsDifferences = new Dataset();
dsOriginal.Merge(dsChanged);
dsDifferences = dsOriginal.GetChanges();
(如果dsDifferences有带行的表,则存在差异)

我的库还有一个方法DetermineVersion(字符串文件名),用于检查文件是否为有效的SQLCE文件