EF6与SQL Server CE 4.0,代码优先,检查有效的数据库文件

时间:2014-07-09 09:39:49

标签: entity-framework sql-server-ce

我将EF6与SQL Server Compact数据库,Code-First方法和MigrateToLatestVersion-Initializers一起使用。我还有两个使用相同数据库的DbContext派生类。编程语言是C#,IDE是Visual Studio 2013。

在应用程序启动时,我想检查给定的数据库文件是否有效。首先,我检查文件是否存在,但我还想检查文件是否是有效的数据库。

我的第一个方法是创建每个DbContext类的实例。但由于这不能访问数据库,我无法捕获任何意味着无效文件的异常。

但是当我调用访问数据库的函数时,如SomeContextEntities.ToList(),我也不会得到任何异常,即使我检查的文件是一个简单的文本文档。我猜初始化程序只是覆盖无效的文本文件并创建一个新的数据库。

然后我尝试了SomeContext.Database.Connection.Open(),希望该方法在数据库文件无效时抛出异常,但它不会,而ConnectionState只会更改为“open”。事实上,当我调用SomeContext.Database.Connection.Close()时,以前的文本文件已被转换为空数据库文件。

同样SomeContext.Database.Exists()显然只检查文件存在。

是否有(最好是低成本)方法来检查有效的数据库文件?

0 个答案:

没有答案