昨天,我决定将我的应用程序从LINQ-to-SQL转换为EF4,以利用代码优先功能。我创建了我的POCO,一个DbContext类,实现了新的存储库类,一切都很好。
稍后,我注意到用于创建SqlExpress MDF文件的文件名EF中存在拼写错误。我将旧DB从其文件夹中移出,清除了配置文件中的连接字符串,并让EF创建一个新的空DB。它创建了文件,在我的app.config文件中添加了一个连接字符串,应用程序运行正常。但是,当我查看连接字符串中指定的文件夹时,不存在MDF。实际上,该文件夹甚至不存在。这是EF添加的连接字符串:
<add name="PhotoAlbum.Infrastructure.Properties.Settings.PhotoAlbumConnectionString"
connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename="C:\Src\Visual Studio 2010\Projects\PhotoAlbum\trunk\PhotoAlbum.Web\App_Data\PhotoAlbum.mdf";Integrated Security=True;User Instance=True"
providerName="System.Data.SqlClient" />
看到EF决定将文件放在C:而不是D :(文件夹确实存在,但文件不存在),我将连接字符串更改为:
<add name="PhotoAlbum.Infrastructure.Properties.Settings.PhotoAlbumConnectionStringg"
connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename="D:\Src\Visual Studio 2010\Projects\PhotoAlbum\trunk\PhotoAlbum.Web\App_Data\PhotoAlbum.mdf";Integrated Security=True;User Instance=True"
providerName="System.Data.SqlClient" />
EF未在D:驱动器上创建新文件或尝试打开现有文件。这显然对EF没有影响,因为它仍然能够访问这个幻像MDF文件。
我搜索了整台计算机,系统上的任何地方都没有PhotoAlbum.mdf文件。这个文件去了哪里?为什么EF能找到它,但我不能?
答案 0 :(得分:1)
这似乎只是EF的CTP版本的一个问题。 SQL CE文件现在出现了。
答案 1 :(得分:0)
您使用什么来查找文件?你的操作系统是64位吗?如果是,那么如果您使用32位工具查看文件系统,它将显示它的虚拟视图。