2016-12-14 50 views
0

我使用entityFramework和SQLCompact創建了一個數據庫。我試圖創建一個新的數據庫文件使用有時是超過128個字符的路徑,當這種情況發生時我會得到一個異常。DbContext字符串構造函數超過128個字符

關鍵'初始目錄'的值長度超過了 '128'的限制。

有沒有辦法改變這種行爲並使用比這更長的連接字符串?

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

我不認爲'GetConnectionString'是做什麼的,你覺得它在做什麼,這將返回** **路徑到您的'.sdf'文件,而不是有效的連接字符串 – Liam

+1

不是'Dbcontext'所需的'connectionString',而只是webConfig中的'name',用於獲取其'connectionString'值?你可以命名的關鍵是什麼想要的,但connectionString屬性是你把所有的數據庫相關的東西.. –

+0

@Liam當我調用基地(GetConnectionString())它假設創建DB文件的字符串路徑,如果它不存在,但有時該路徑超過128個字符,我得到一個異常 – acostela

回答

0

最後我解決它。問題是,儘管我已經安裝並編寫了所有代碼,但我忘記了將默認連接更改爲數據庫,並且使用了提供VS2015的內部連接。

一旦我將其更改爲使用SQLCompact,該連接字符串中帶有128個字符的異常已消失,並且如果數據庫不存在,何時訪問該路徑會創建一個新的。

變化的App.config

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

這一個:

<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework"> 
    <parameters> 
    <parameter value="System.Data.SqlServerCe.4.0" /> 
    </parameters> 
</defaultConnectionFactory> 
相關問題