C# 验证数据库的架构
我有一个从SQLServerCE4.0数据库文件读取的应用程序 用户可以在启动时选择数据库。每个数据库都有相同的模式,但数据不同 考虑到我想确保他们不使用无效的数据库(或将应用程序指向word文件或其他东西),是否可以验证所选数据库的架构 在过去,我使用ADO.net检查每个表中的每一列是否存在,但当实体框架存在时,这看起来非常愚蠢。当然,EF中一定有某种东西可以实现这一点,但我找不到它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中一定有某种东西可以实现这一点,但我找不到它 我正在寻找一个比“运行一个查询,如果它失败,那么数据库无效”更复杂的答案,因为可能还有很多其他原因导致这样的
我正在寻找一个比“运行一个查询,如果它失败,那么数据库无效”更复杂的答案,因为可能还有很多其他原因导致这样的查询失败 您可以使用我的SQL CE脚本API,可通过NuGet获得 首次使用
DataSet GetSchemaDataSet(GetAllTableNames());
并将其保存并添加到您的应用程序中
然后使用
DataSet GetSchemaDataSet(GetAllTableNames());
在加载的数据库上
然后比较这两个数据集
DataSet dsDifferences = new Dataset();
dsOriginal.Merge(dsChanged);
dsDifferences = dsOriginal.GetChanges();
(如果dsDifferences有带行的表,则存在差异)
我的库还有一个方法DetermineVersion(字符串文件名),用于检查文件是否为有效的SQLCE文件