Code First迁移到LocalDB,我可以指定* where *创建数据库吗?

时间:2014-03-20 15:48:39

标签: wpf entity-framework ef-code-first migration localdb

我一直致力于CodeFirst POCO WPF项目,我希望数据库是LocalDB。我已经使用迁移(在Package Manager控制台窗口中添加迁移和更新数据库命令)来生成我的数据库和表。我已将配置文件设置为具有以下连接字符串:

    <add name="MyContext" connectionString="Data Source=(LocalDB)\v11.0;Database=MyDatabase;Integrated Security=True;" providerName="System.Data.SqlClient" />  

使用该连接字符串,在控制台中调用 update-database 后,它会正确创建数据库和所有表,但是它会将MDF文件放在当前登录用户的根目录中。这就是我试图改变的行为。我喜欢在应用程序文件夹中创建的数据库。我该怎么做?

我已尝试添加&#34; AttachDBFileName = | DataDirectory | \ MyDatabase.mdf&#34;到连接字符串,但运行update-database后我收到此错误:

A file activation error occurred. The physical file name '\MyDatabase.mdf' may be incorrect. Diagnose and correct additional errors, and retry the operation.
CREATE DATABASE failed. Some file names listed could not be created. Check related errors.

如果我尝试&#34;初始文件名&#34;我得到同样的错误而不是AttachDBFileName。看起来这只有在文件已存在的情况下才有效?但我希望在用户首次启动应用时自动生成该文件,将该文件存在于与应用程序相同的文件夹中。我该怎么做呢?

-shnar

1 个答案:

答案 0 :(得分:0)

这是因为使用DataDirectory的数据文件的默认位置位于Program Files for Desktop应用程序中。要修改Program Files子目录,需要以管理员身份运行程序,或者为目录提供适当的写访问权限。请参阅AppDomain.SetData以将DataDirectory宏设置为实际的%AppData%目录。它反对Microsoft Best Practices在Program Files中创建数据文件,通常不需要这样做。