Wenn ich Entity Framework 5 mit LocalDb verwende, gibt es eine Möglichkeit, den Dateinamen der Datenbank in der Datei app.config/web.config anzugeben?Kann ich den Dateinamen für eine lokale Datenbank in Entity Framework 5 angeben?
Antwort
Bei weiteren Untersuchungen sieht es so aus, als ob es wirklich einfach ist, aber es ist nicht klar beim Lesen der Dokumente.
Zunächst einmal müssen Sie die Entity Framework Teil der Konfiguration
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
haben Sobald Sie, dass Sie dann die Verbindungszeichenfolge angeben. Standardmäßig ist der Name der Verbindungszeichenfolge der vollständig qualifizierte Name Ihres Kontexts. Also in meinem Test-App wurde der Kontext 'DataModel.Context' genannt, also brauche ich eine Verbindungszeichenfolge für '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" />
Diese verwendet dann die Datei 'database.mdf' in das Datenverzeichnis des Projekts.
Als Nick erwähnt, müssen Sie die connectionString
außerhalb von <entityFramework>
Tags liefern. So eine Probe App.config
könnte so aussehen:
<?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>
auch beachten, dass <parameter value="mssqllocaldb" />
auf der Version von SQL Server abhängig ist. Check this answer for more information.
In welchen Abschnitt sollen Sie die setzen? –
@WouterSchut Kasse meine Erklärung – Yar