2016-12-14 8 views
0

Ich erstelle einen DB mit EntityFramework und SQLCompact. Ich versuche, eine neue DB-Datei mit einem Pfad zu erstellen, der manchmal länger als 128 Zeichen ist. In diesem Fall erhalte ich eine Ausnahme.DbContext String Konstruktor länger als 128 Zeichen

Die Länge des Werts für den Schlüssel 'initial catalog' überschreitet das Limit von '128'.

Gibt es trotzdem dieses Verhalten zu ändern und eine Verbindungszeichenfolge länger als das verwenden?

public class DbTestingContext: DbContext 
{ 

    public DbTestingContext() : base(GetConnectionString()) 
    { 
     Database.SetInitializer(new DropCreateDatabaseIfModelChanges<DbTestingContext>()); 
    } 

    public virtual DbSet<TestingModel> Tests { get; set; } 

    private static string GetConnectionString() 
    { 
     return Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) + "/db/", 
      "TestingPrototypes.DbTests.DbTestsContext.sdf"); 
    } 
} 
+0

Ich glaube nicht 'GetConnectionString' tut, was Sie denken, es tut, dass die ** Pfad zurückkehren ** zu Ihrer '.sdf' Datei, keine gültige Verbindungszeichenfolge – Liam

+1

ist nicht der' connectionString', der von 'Dbcontext' benötigt wird, nur ein' name' in der webConfig, der verwendet wird, um seinen 'connectionString' Wert zu holen? Sie können den Schlüssel nennen, was auch immer wollen, aber das 'connectionString' Attribut ist, wo Sie alle DB verwandten Sachen setzen. –

+0

@Liam Wenn ich base (GetConnectionString()) aufrufe, wird angenommen, dass die DB-Datei im String-Pfad erstellt wird existiert nicht, aber manchmal ist dieser Pfad länger als 128 Zeichen und ich bekomme eine Ausnahme – acostela

Antwort

0

Endlich habe ich es gelöst. Das Problem war, dass trotz der Tatsache, dass ich alles installiert und codiert habe, ich vergessen habe, die Standardverbindung zur DB zu ändern, und ich die interne, die VS2015 bietet.

Sobald ich es geändert habe, um SQLCompact zu verwenden, wurde die Ausnahme, die mit 128 Zeichen in der Verbindungszeichenfolge angezeigt wurde, gelöscht, und wenn auf den Pfad zugegriffen wird, wenn die DB nicht existiert, wird eine neue erstellt.

ändern App.config

<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> 
    <parameters> 
    <parameter value="mssqllocaldb" /> 
    </parameters> 
</defaultConnectionFactory> 

Um diese:

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