DbContext字符串构造函数长于128个字符

时间:2016-12-14 10:07:02

标签: c# entity-framework

我正在使用entityFramework和SQLCompact创建数据库。我正在尝试使用有时长度超过128个字符的路径创建一个新的DB文件,当发生这种情况时我会收到异常。

  

关键'初始目录'的值的长度超过了它的限制   '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");
    }
}

1 个答案:

答案 0 :(得分:1)

最后我解决了。问题是,尽管我已经安装并编码了所有内容,但我忘记更改与DB的默认连接,而我使用的是提供VS2015的内部连接。

一旦我改变它以使用SQLCompact,在连接字符串中删除了128个字符的异常已消失,当访问路径时如果DB不存在则创建一个新的。

更改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>