2012-04-03 9 views
3

Ich habe ein POCO und einen Kontext erstellt und EF von NuGet (v4.3.1) zu meinem Projekt hinzugefügt. Die app.config sieht mir etwas neu im Vergleich zu dem, was ich gewohnt bin. Es hat diesen Abschnitt drin:Wie generiert man automatisch SDF in Code First Ansatz

<entityFramework> 
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"> 
    <parameters> 
    <!--<parameter value="Data Source=|DataDirectory|Test.sdf; Integrated Security=True; MultipleActiveResultSets=True" />--> 
    </parameters> 
</defaultConnectionFactory> 

Ich habe die ‚Parameter‘, kommentierte und eine Verbindungszeichenfolge Schnipsel statt wie dies unter dem Tag an der Spitze hinzu:

<connectionStrings> 
    <add name="CodeFirstExampleContext" connectionString="Data Source=|DataDirectory|Test.sdf;Initial Catalog=CodeFirstExample;integrated security=True" providerName="System.Data.SqlServerCe.4.0" /> 
</connectionStrings> 

Zuvor mit einer solchen Verbindungszeichenfolge wurde die SQL CE-Datenbank automatisch generiert. Aber das tut es jetzt nicht. Stattdessen erhalte ich die folgende Ausnahme:

"Beim Abrufen von Anbieterinformationen aus der Datenbank ist ein Fehler aufgetreten. Dies kann durch eine falsche Verbindungszeichenfolge von Entity Framework verursacht werden. Überprüfen Sie die inneren Ausnahmen auf Details und stellen Sie sicher, dass die Verbindungszeichenfolge korrekt ist . "

die innere Ausnahme ist:

"Der Anbieter hat keinen ProviderManifestToken String zurückgekommen."

Hier sind meine POCO und Context-Typen:

class Person 
{ 
    [Key] 
    public int Id { get; set; } 
    public string FName { get; set; } 
    public string LName { get; set; } 
    public int Age { get; set; } 
} 


class Context:DbContext 
{ 
    public DbSet<Person> People { get; set; } 
} 

Bin ich hier etwas fehlt?

Vielen Dank im Voraus!

Antwort

0

Ändern Sie die Verbindungszeichenfolge:

<connectionStrings> 
    <add name="Context" connectionString="Data Source=|DataDirectory|\Test.sdf" 
    providerName="System.Data.SqlServerCe.4.0" /> 
</connectionStrings> 

Und die Werks-Verbindung:

<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework"> 
    <parameters> 
    <parameter value="System.Data.SqlServerCe.4.0" /> 
    </parameters> 
</defaultConnectionFactory> 
+0

Leider, die nicht entweder arbeiten. Ich hatte das vorher tatsächlich versucht. Ich habe festgestellt, dass dieses Format generiert wurde, wenn ich versuchte, dem Projekt eine neue 'Datenbankdatei' hinzuzufügen und SQL Server CE als Quelle auszuwählen. – Cranialsurge

+1

Der Name muss mit dem vollständigen Namen Ihres DbContext übereinstimmen, oder verwenden Sie name = CodeFirstExampleContext im DbContext-Konstruktor - siehe http://petebarber.blogspot.com/2012/04/using-nunit-and-entity-framework.html – ErikEJ

Verwandte Themen