2012-10-12 3 views
10

Ich habe ein Code zuerst EF-Projekt mit SQl Compact 4.0 versucht. Wenn ich versuche, das Projekt auszuführen, erhalte ich die Fehlermeldung, dass die Berechtigung CREATE DATABASE in der Datenbank 'master' verweigert wurde. ".Entity Framework Verbindung zu SQLEXPRESS nicht SQL Compact

Ich suchte nach Hilfe und als Antwort auf ein paar Blogs versucht, die Verbindungszeichenfolge zu identifizieren, die verwendet wird. Zu meiner Überraschung war es

context.Database.Connection.ConnectionString "Data Source=.\\SQLEXPRESS;Initial Catalog=Ancestors.Models.AncestorsContext;Integrated Security=True;MultipleActiveResultSets=True;Application Name=EntityFrameworkMUE" string 

obwohl meine web.config-Datei die folgenden Abschnitte ...

<connectionStrings> 
    <add name="DefaultConnection" providerName="System.Data.SqlServerCe.4.0" connectionString="Data Source=|DataDirectory|\aspnet-Ancestors-20121012114712.sdf" /> 
</connectionStrings> 

<system.data> 
<DbProviderFactories> 
    <remove invariant="System.Data.SqlServerCe.4.0" /> 
    <add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.1, Culture=neutral, PublicKeyToken=89845dcd8080cc91" /> 
</DbProviderFactories> 
</system.data> 

Hat jemand eine Idee, warum EF besteht auf eine Verbindung zu schaffen, anstatt SQL SQLExpress Kompakt? Ich kann SQLEXPRESS nirgendwo in der Lösung finden.

Antwort

2

Suchen Sie nach dem <entityFramework> Abschnitt in web.config, sollte es Ihre Standardverbindung Fabrik dort hat:

<entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"> 
     <parameters> 
     <parameter value="Data Source=.\SQLEXPRESS; Integrated Security=True; MultipleActiveResultSets=True"/> 
     </parameters> 
    </defaultConnectionFactory> 
    </entityFramework> 

Wenn Sie einen Code erstes Projekt tun, können Sie auch Ihre Standardkonstruktors ändern zu verwenden Ihre andere Verbindungszeichenfolge:

public YourContext() : base("name=DefaultConnection") 
{ 

} 
+0

Das Abschnitt ist wie folgt ...

+0

versuchen, einen Wert auf Ihre defaultConnectionFactory Hinzufügen mit Ihrer Verbindungszeichenfolge oder ändern Sie Ihren Standardkonstruktor so, dass er auf Ihre andere Verbindungszeichenfolge abzielt. –

1

Dieser Blog-Eintrag behandelt, wie dies zu tun ...

http://blogs.msdn.com/b/davidobando/archive/2013/03/13/10339621.aspx

+0

Vielen Dank, dass Sie Ihre Antwort geschrieben haben! Bitte beachten Sie, dass Sie die wesentlichen Teile der Antwort hier auf dieser Website veröffentlichen sollten oder dass Ihr Beitrag gelöscht werden könnte [Siehe die FAQ, in der Antworten erwähnt werden, die "kaum mehr als ein Link" sind.] (Http: // stackoverflow. com/faq # löschen) Sie können den Link noch einfügen, wenn Sie möchten, aber nur als 'Referenz'. Die Antwort sollte eigenständig stehen, ohne die Verbindung zu benötigen. – Taryn

3

Statt die die Verwendung folgend zu Ihrem Verbindungsnamen der Richtlinie der Namen verwenden

public YourContext() : base("DefaultConnection") 
{ 

} 

DbContext passieren

public YourContext() : base("name=DefaultConnection") 
{ 

} 

Dies wird EF sagt den Parameter als Verbindung zu verwenden.

Auch das Hinzufügen von "clear" oben in den connectionStrings-Abschnitten in web.config kann Vererbungsprobleme beheben.

+0

Für EF6, wenn Sie 'Name' zum Kontext hinzufügen, erhalten Sie eine Fehlermeldung' "Verbindung mit diesem Namen nicht gefunden" ' – user3402754

Verwandte Themen