首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用IBM DB2 i系列数据库的实体框架提供程序错误

使用IBM DB2 i系列数据库的实体框架提供程序错误
EN

Stack Overflow用户
提问于 2017-06-23 18:34:04
回答 1查看 2.3K关注 0票数 0

好的,这是我的问题,我想首先用数据库的方式,使用DB2 for i系列数据库的实体框架,但是要获得成功的连接是非常复杂的。

首先,我试图使用"IBM DB2和入侵检测服务器“数据源创建实体数据模型,但尽管我成功地创建了到LUW DB2的连接,但我无法使用DB2 for I系列,但我尝试了端口446,它说存在许可证问题,9471生成了一个连接错误,8471继续等待,50000没有成功,我甚至尝试使用没有端口,但它没有工作。

因此,我选择使用IBM数据源,这个选项允许我连接,但是当我尝试使用EntityFramework6.1.3时,我得到一个错误,告诉我EF6.x与这个版本不兼容。

因此,我将EF降级到5.0版本,尝试以任何方式创建实体模型,然后升级EF版本,但是,在选择EF5.0之后单击next时,实体数据模型向导在显示数据库对象和设置之前消失,模型不会被创建。

然后,我决定不需要edmx文件,我现在可以手动进行映射了,所以我开始创建类来执行映射:

AppContext:

代码语言:javascript
运行
复制
public class AppContext: DbContext
{
    public AppContext() : base( "connectionString" )
    {
    }

    public DbSet<Data> Datas { get; set; }
}

数据:表(“数据”)公共类数据{列(“Id”)公共int Id{ get;set;}

代码语言:javascript
运行
复制
    [Column("name")]
    public string Name { get; set; }
}    

最后是测试:

代码语言:javascript
运行
复制
public class Program
{
    static void Main(string[] args)
    {

        using (var ctx = new AppContext())
        {
            Data data = new Data() { Id = 1, Name = "A Name" };

            ctx.Datas.Add(data);
            ctx.SaveChanges();                
        }
    }
}

我安装了EntityFramework.IBM.DB2 nuget版本6.0.7,并更改了Web.config以添加连接字符串,我在那里找到了一个名为"IBM.Data.DB2“的新提供程序,并测试了连接,但我开始遇到与第一个连接和不同端口相同的问题。

因此,我认为这个提供程序必须是用于第一个连接的提供程序,我需要一个用于I系列的接口,我将提供程序更改为"IBM.Data.DB2.iSeries“,并再次尝试更改连接字符串中的一些参数,但现在我得到了这个错误:

实体框架提供程序的“实例”成员类型'IBM.Data.DB2.iSeries.iDB2Factory,IBM.Data.DB2.iSeries,Version=12.0.0.0,Culture=neutral,PublicKeyToken=9cdb2ebfb1f93a26‘没有返回继承自IBM.Data.DB2.iSeries.iDB2Factory的对象。实体框架提供程序必须继承此类,“实例”成员必须返回提供程序的单例实例。这可能是因为提供程序不支持实体框架6或更高版本;有关更多信息,请参见http://go.microsoft.com/fwlink/?LinkId=260882

下面是我的Web.config中的连接字符串和提供程序:

代码语言:javascript
运行
复制
<connectionStrings>
    <add name="DB2Connection" providerName="IBM.Data.DB2" connectionString="DataSource=192.168.1.54;UserID=XXXX;DefaultCollection=XXXX;Database=DB10000010; Password=XXXXXX;" />
    <add name="connectionString" providerName="IBM.Data.DB2.iSeries" connectionString="Server=192.168.1.54;UserID=XXXXX;Database=DB100000010; Password=XXXXX;" />
</connectionStrings>

<providers>
    <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    <provider invariantName="IBM.Data.DB2" type="IBM.Data.DB2.EntityFramework.DB2ProviderServices, IBM.Data.DB2.EntityFramework, Version=10.5.5.6, Culture=neutral, PublicKeyToken=7c307b91aa13d208" />
    <provider invariantName="IBM.Data.DB2.iSeries" type="IBM.Data.DB2.iSeries.iDB2Factory, IBM.Data.DB2.iSeries, Version=12.0.0.0, Culture=neutral, PublicKeyToken=9cdb2ebfb1f93a26" />
</providers>

我还找到了一个新的IBM i Access,它应该取代以前的IBM DB2 i系列用于windows提供程序,但是找不到与它一起工作的数据源。

好的,我的想法不多了,有人能帮我使用IBM系列的实体框架吗?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2018-03-21 11:01:06

要与DB2 iSeries连接,必须使用端口446进行连接。这是一个令人头疼的问题。您必须与IBM联系才能获得许可证:

ADM12008C产品“”没有安装有效的许可证密钥,评估期已经过期。未启用特定于此产品的功能。如果您已授权此产品,请确保许可证密钥已正确安装。您可以使用db2licm命令安装许可证。许可文件可以从您的授权产品CD中获得。

请按照此链接获取更多信息:

https://www.ibm.com/developerworks/community/forums/html/topic?id=9a107d00-d814-440c-b438-faa4d020ae1a&ps=100

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44727930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档