我一直试图找到任何关于如何在.Net应用程序中安装用于firebird数据库的实体框架6.0提供程序(嵌入式版本)的文档。
我可以找到的大多数文档都是关于ADO.Net提供程序的,但是我正在寻找实体框架,特别是:
1)如何使用EF6 2来设置firebird app.config提供程序,以及如何使用新的EF6代码安装程序进行设置(通过对DbConfiguration类进行反编译:我不确定如何传递给火鸟EF6提供程序的SetExecutionStrategy()和SetDefaultConnectionFactory()方法。
指向提供者的链接在这里:http://www.firebirdsql.org/en/additional-downloads/
以及我在网站上找到的关于.net的文档(但只针对ADO,在实体框架dll上没有)。http://www.firebirdsql.org/en/net-examples-of-use/
我只知道,对于嵌入式数据库,ServerType应该是1。
发布于 2015-09-01 19:25:26
感谢magicandre1981的评论,我尝试使用NuGet,而不是简单地从firebird的网站下载dll。
我通常避免使用NuGet自动安装包,但是它帮助我更进一步,所以我决定尝试一下:在实体框架上下文的初始化过程中不再出现错误消息。
不过,在编译过程中,我收到了关于两个程序集共享依赖但版本号不同的警告,您猜对了.Visual不够好,不能告诉这些程序集是什么。我只是暂时忽略了它,并运行我的程序,以获得一个System.Data.ProviderIncompatibleException。对于我刚才忽略的Visual警告,这并不令人惊讶。
因此,回到警告,感谢来自github (https://github.com/mikehadlow/AsmSpy)的https://github.com/mikehadlow/AsmSpy,我发现:
Reference: FirebirdSql.Data.FirebirdClient
4.7.0.0 by EntityFramework.Firebird
4.5.0.0 by FirebirdTestFirebirdTest是我的csproj的名称,它唯一的目的是用实体框架测试firebird。这个解决方案除了这个项目什么也没有。之所以安装了FirebirdSql.Data.FirebirdClient,是因为我使用NuGet命令安装了它:
Install-Package EntityFramework.Firebird
这基本上意味着NuGet包安装了错误的Firebird.Data.FirebirdClient程序集版本。所以我做了以下工作
因此,基本上,NuGet包是错误的,没有安装Firebird.Data.FirebirdClient程序集的正确版本。也许我不走运,但这通常是我不喜欢NuGet的原因,即使我知道这不是NuGet本身的问题。
无论如何,正如您所看到的,让Firebird与实体框架一起工作并不容易(我也不会告诉您我现在正在使用Firebird DDEX包所经历的地狱)。尽管firebird数据库本身似乎对嵌入式数据库技术非常有希望。遗憾的是,缺乏适当的文档来将其与实体框架集成在一起,使得事情变得更加困难。
发布于 2020-06-04 14:35:07
我使用了以下命令,并生成了模型
Scaffold-DbContext "User=SYSDBA;Password=masterkey;Database=dbname;DataSource=xxx.xxx.xxx;Port=3050;Dialect=3;Charset=NONE;Role=;Connection lifetime=15;Pooling=true;MinPoolSize=0;MaxPoolSize=50;PacketSize=8192;ServerType=0;" -o Modelshttps://stackoverflow.com/questions/32320319
复制相似问题