Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.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
Entity framework 使用SQL Server CE 4.0的EF6,首先编码,检查有效的数据库文件_Entity Framework_Sql Server Ce - Fatal编程技术网

Entity framework 使用SQL Server CE 4.0的EF6,首先编码,检查有效的数据库文件

Entity framework 使用SQL Server CE 4.0的EF6,首先编码,检查有效的数据库文件,entity-framework,sql-server-ce,Entity Framework,Sql Server Ce,我将EF6与SQL Server Compact数据库、代码优先方法和MigrateToLatestVersion初始值设定项一起使用。我还有两个使用相同数据库的DbContext派生类。编程语言为C,IDE为Visual Studio 2013 在应用程序启动时,我想检查给定的数据库文件是否有效。首先,我检查文件是否存在,然后我还要检查文件是否是有效的数据库 我的第一种方法是为我的每个DbContext类创建一个实例。但由于这无法访问数据库,我无法捕获任何暗示文件无效的异常 但是,当我调用访问

我将EF6与SQL Server Compact数据库、代码优先方法和MigrateToLatestVersion初始值设定项一起使用。我还有两个使用相同数据库的DbContext派生类。编程语言为C,IDE为Visual Studio 2013

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

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

但是,当我调用访问数据库的函数时,比如someContexties.ToList,我不会得到任何异常,即使我检查的文件是一个简单的文本文档。我猜初始值设定项只是覆盖了无效的文本文件并创建了一个新的数据库

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

另外,SomeContext.Database.Exists显然只是检查文件是否存在


是否有一种成本较低的方法来检查有效的数据库文件?

请解释有效的数据库文件是什么意思-如果可以的话。打开它是有效的…通过“有效的数据库文件”,我指的是有效的*.sdf文件,或者换句话说:现有的数据库。如果我创建e textfile,然后将后缀重命名为.sdf,将连接字符串设置为该文件,然后使用Database.Connection.Open,则textfile将转换为空数据库文件,而不会引发任何异常。因此,我没有机会让用户知道他试图读取一个无效的数据库文件,在本例中是一个文本文件。