无法确定“System.Data.SqlServerCe.SqlCeConnection”类型连接的提供程序名称

问题描述 投票:0回答:1

我正在使用仅包含代码的 Ado.Net 实体框架(教程位于:ADO.NET 团队博客)并且我希望尽可能独立于数据库。

在我的第一种方法中,我只想使用 Sql Express 和 Sql Compact 数据库。 使用 Sql Express 一切正常,但是使用 Sql Compact 我得到了我的问题中提到的异常。

有人知道是否可以使用仅代码方法连接到 Sql Compact 吗? (为 Sql Compact 数据库生成的 .edmx 文件一切正常,但我只想使用代码!)

这里是一些代码:

正在构建 DataContext 的我的班级:

public class DataContextBuilder : IDataContextBuilder
{
    private readonly DbProviderFactory _factory;

    public DataContextBuilder(DbProviderFactory factory)
    {
        _factory = factory;
    }

    #region Implementation of IDataContextBuilder

    public IDataContext CreateDataContext(string connectionString)
    {
        var builder = new ContextBuilder<DataContext>();
        RegisterConfiguration(builder);

        var connection = _factory.CreateConnection();
        connection.ConnectionString = connectionString;

        var ctx = builder.Create(connection);

        return ctx;
    }

    #endregion

    private void RegisterConfiguration(ContextBuilder<DataContext> builder)
    {
        builder.Configurations.Add(new PersonConfiguration());
    }
}

线路

var ctx = builder.Create(connection);

正在抛出异常。

IDataContext 只是 ObjectContext 的一个简单接口:

public interface IDataContext
{
    int SaveChanges();

    IObjectSet<Person> PersonSet { get; }
}

我的连接字符串是在app.config中配置的:

<connectionStrings>
<add name="CompactConnection" connectionString="|DataDirectory|\Test.sdf"
  providerName="System.Data.SqlServerCe.3.5" />
</connectionStrings>

构建动作开始于

var cn = ConfigurationManager.ConnectionStrings["CompactConnection"];
var factory = DbProviderFactories.GetFactory(cn.ProviderName);
var builder = new DataContextBuilder(factory);
var context = builder.CreateDataContext(cn.ConnectionString);
ado.net sql-server-ce
1个回答
3
投票

我必须回答我自己的问题。

这现在适用于 实体框架 CTP 4

和 SQL Server Compact 4.0

© www.soinside.com 2019 - 2024. All rights reserved.