如果我将 Entity Framework 5 与 LocalDb 一起使用,有没有办法在 app.config/web.config 文件中指定数据库的文件名?
问问题
11486 次
2 回答
19
在进一步调查中,它看起来真的很简单,但在阅读文档时并不清楚。
首先你需要有实体框架部分的配置
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
一旦你有了它,你就需要指定你的连接字符串。默认情况下,连接字符串名称是您的上下文的完全限定名称。所以在我的测试应用程序中,上下文被称为“DataModel.Context”,所以我需要一个“DataModel.Context”的连接字符串
<connectionStrings>
<add name="DataModel.Context" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=database;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\database.mdf" providerName="System.Data.SqlClient" />
然后使用项目数据目录中的文件“database.mdf”。
于 2012-08-21T06:19:08.737 回答
3
正如尼克提到的,您需要提供标签的connectionString
外部。<entityFramework>
所以一个样本App.config
可能是这样的:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<connectionStrings>
<add name="CSOMLocalDataProvider.CSOMContext"
connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=D:\path\to\Database.mdf;Integrated Security=True" providerName="System.Data.SqlClient"/>
</connectionStrings>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="mssqllocaldb" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
</configuration>
另请注意,这<parameter value="mssqllocaldb" />
取决于您的 SQL Server 的版本。检查此答案以获取更多信息。
于 2016-01-13T22:41:37.297 回答