Se sto utilizzando Entity Framework 5 con LocalDb, esiste un modo per specificare il nome file del database nel file app.config/web.config?Posso specificare il nome file per un database localdb nell'entità framework 5?
risposta
Su ulteriori indagini sembra che sia davvero semplice, ma non è chiaro durante la lettura dei documenti.
Prima di tutto è necessario avere la parte Entity Framework della configurazione
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
Una volta che avete, è quindi necessario specificare la stringa di connessione. Per impostazione predefinita, il nome della stringa di connessione è il nome completo del contesto. Quindi, nel mio test app, il contesto è stato chiamato 'DataModel.Context', quindi ho bisogno di una stringa di connessione per '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" />
Questo utilizza quindi il file 'database.mdf' in la directory dei dati del progetto.
Come menzionato da Nick, è necessario fornire connectionString
all'esterno di di tag <entityFramework>
. Quindi un campione App.config
potrebbe essere simile a questo:
<?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>
Si noti inoltre che <parameter value="mssqllocaldb" />
dipende dalla versione di SQL Server. Check this answer for more information.
In quale sezione si desidera inserire? –
@WouterSchut checkout mia spiegazione – Yar