簡體   English   中英

Interbase XE7和實體框架6.1.2

[英]Interbase XE7 and Entity Framework 6.1.2

目前我正在開發一個項目,我想使用Entity Framework為Interbase數據庫創建一個數據庫層。 唯一的問題是我無法讓它工作,所以我轉向我心愛的SO共同用戶。

我目前正在使用:

  • Visual Studio 2013 Premium

  • Interbase XE7開發人員版( 在此下載

  • 實體框架6.1.2

  • 提供Interbase XE7安裝的Interbase ADO.NET驅動程序

在這個例子中,我創建了一個非常簡單的數據庫,只有1個表UserTypes ,其中包含IDDescription

我編寫了以下代碼來表示我的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();
}

但是,當我運行應用ProviderIncompatibleException時,在執行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提供的提供商不提供對實體框架的支持。 所以我的問題如下:

  • Interbase ADO.NET驅動程序是否為實體框架提供支持? 或者我做錯了什么?

  • 是否有任何其他驅動程序支持我所需的功能?

任何有關此主題的幫助都將受到高度贊賞。

我在使用成功運行的Microsoft SQL Server數據庫時也嘗試了相同的代碼,因此我認為我的代碼通常沒有任何問題。

據我目前所知,不支持將Interbase數據庫與EF連接。 但是,應該可以根據EF的指南編寫自己的提供程序,可以在此處找到。

要開始使用,您可能需要查看FireBird提供程序(它是開源的)並且已經在使用EF。 如果您研究提供的代碼,您可能有一個很好的觸發器來為EF編寫自己的Interbase提供程序。 可以在此處找到FireBirds EF .NET Provider的鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM