Interbase XE7 和 Entity Framework 6.1.2

Interbase XE7 and Entity Framework 6.1.2

目前我正在做一个项目,我想使用 Entity Framework 为 Interbase 数据库创建一个数据库层。唯一的问题是我无法让它工作,所以我求助于我心爱的 SO 共同用户。

我目前正在使用:

对于这个例子,我创建了一个非常简单的数据库,只有 1 个 table UserTypes,其中包含一个 ID 和一个 Description.

我已经编写了以下代码来表示我的 UserTypes 模型和我的上下文(这确实非常基础):

public class MyContext : DbContext
{
    public MyContext(DbConnection connection)
        : base(connection, true)
    { }

    public virtual DbSet<UserTypes> UserTypes { get; set; }
}

public class UserTypes
{
    [Key]
    public int ID { get; set; }

    [StringLength(40)]
    public string Description { get; set; }
}

在我的 Main 中,我编写了以下代码:

static void Main(string[] args)
{
    TAdoDbxConnectionStringBuilder CnStrBuilder = new TAdoDbxConnectionStringBuilder()
    {
        User_Name = "SYSDBA",
        Password = "masterkey",
        DBHostName = "localhost",
        Database = @"C:\Users.gdb",
        DriverName = "Interbase"
    };

    DbConnection connection = new TAdoDbxInterBaseConnection();
    connection.ConnectionString = CnStrBuilder.ConnectionString;

    using (var context = new MyContext(connection))
    {
        Console.WriteLine("Showing all user types");

        var query = from ut in context.UserTypes
                    orderby ut.ID
                    select ut;

        foreach (var userType in query)
        {
            Console.WriteLine("{0}: {1}", userType.ID, userType.Description);
        }
    }

    Console.WriteLine("Press any key to exit...");
    Console.ReadKey();
}

但是,当我 运行 应用程序在执行 LINQ 查询时抛出 ProviderIncompatibleException。异常具有以下消息:

A null was returned after calling the 'get_ProviderFactory' method on a store provider instance of type 'Borland.Data.TAdoDbxInterBaseConnection'. The store provider might not be functioning correctly.

我对异常的解释是Embarcadero提供的provider不支持Entity Framework。所以我的问题如下:

非常感谢有关此主题的任何帮助。

我在使用成功运行的 Microsoft SQL 服务器数据库时也尝试了相同的代码,所以我认为我的代码一般没有任何问题。

据我目前所知,EF不支持连接Interbase数据库。但是,应该可以根据 here.

中的 EF 指南编写您自己的提供程序

首先,您可能想看看 FireBird 提供程序(它是开源的)并且已经在使用 EF。如果您研究提供的代码,您可能会很好地触发为 EF 编写您自己的 Interbase 提供程序。 link 到 FireBirds EF .NET Provider 可以找到 here