学院网站建设工作会议,两学一做网站答题网址,vs2015 做网站,网络营销服务有限公司上一篇讲了一些EF Core访问Oracle的坑。#xff08;感兴趣请移步#xff1a;使用Entity Framework Core访问数据库#xff08;Oracle篇#xff09;#xff09;这篇主要讲一下关于EF Core访问DB2的一揽子~问题。本篇采用DBFirst直接生成实体。关于EF Core DB2 的官方文档感兴趣请移步使用Entity Framework Core访问数据库Oracle篇这篇主要讲一下关于EF Core访问DB2的一揽子~问题。本篇采用DBFirst直接生成实体。 关于EF Core DB2 的官方文档点这里E文好的可以参考正文1.生成上下文实体并访问数据库 首先我们当然是生成上下文实体啦~ 我们创建一个空的控制台程序如下然后Nuget添加引用Microsoft.EntityFrameworkCore.ToolsDBFirst的生成工具 必须的IBM.EntityFrameworkCoreDB2官方的库这个库请注意是Windows版本的后面我们讲解各类版本的区别然后我们打开Nuget控制台输入DBFirst的生成语句 生成上下文语句如下Scaffold-DbContext 这里是你的连接字符串; IBM.EntityFrameworkCore 生成效果如下这样我们就生成了我们的上下文实体。我们编写一个简单的查询语句查询一下Price表的数据量 class Program {static void Main(string[] args) {using (MYTESTDBContext db new MYTESTDBContext()) {var date db.Price.Count(); Console.WriteLine(date); Console.ReadLine(); } } }效果如下证明我们的上下文是没什么问题的至此关于Windows系统的DB2访问。。就完美结束了。。2.关于在其他系统使用DB2的小问题。上面我们使用的开发机是windows系统所以直接引用了IBM.EntityFrameworkCore包。但是我们在Nuget搜索关键字IBM.EntityFrameworkCore你会发现它有三个包如下So...一脸黑人懵比。。其实在官方文档中已经解释过了。Windows系统使用IBM.EntityFrameworkCoreLinux系统使用IBM.EntityFrameworkCore-InxMacOS系统使用IBM.EntityFrameworkCore-osx在生成上下文的时候前面的步骤无需改动。最后生成的语句改成你对应的dll即可。所以 有些在MacOS本上使用VS code的兄弟。。请引用osx的包哦。 3.关于在Docker中部署的问题。我这个项目也是一个移植类的项目。既然要费心的移植那目的当然是跑在linux系统上。。打包到docker 实现容器化部署所以。。但是我们的开发机又是windows系统。。所以我们需要在引用一下IBM.EntityFrameworkCore-InxPS同时引用2个包不会有冲突然后我们生成。。部署到docker。。你会发现。。项目跑起来了。。但是查询数据库。。又挂掉了。。错误信息如下Unhandled Exception: System.DllNotFoundException: Unable to load DLL libdb2.so: The specified module could not be found.缺少依赖包这个问题纠结了我一夜。。后来查询各种资料查到凌晨。。MMP发现官方有一篇博客对这个问题进行了说明。但是解决方案我觉得并不是很合适,文章地址点这里官方介绍是因为在docker环境中缺少了一个名为libxml2.so.2的依赖库我们需要自己下载这个库。。百度搜索 说一下为什么我觉得官方的解决方案不是很合适以为他需要我们在main方法中加一段设置linux快捷访问的代码。其实我们完全可以把这段操作放在我们的DockerFile中。所以我们最终的DockerFile应该如下FROM microsoft/dotnet:2.1-aspnetcore-runtime AS baseWORKDIR /appCOPY . /appEXPOSE 80COPY . ./COPY clidriver /app/clidriverCOPY libs/libxml2.so.2.9.1 /app/clidriver/lib/libxml2.so.2.9.1RUN ln /app/clidriver/lib/libxml2.so.2.9.1 /app/clidriver/lib/libxml2.so.2ENV LD_LIBRARY_PATH/app/clidriver/lib/ENV PATH$PATH:/app/clidriver/bin:/app/clidriver/libENTRYPOINT [dotnet, DockerTest.dll]然后查看我们的项目。。即可成功访问DB2数据库。~结束语说起来都是泪国内关于EF Core访问 DB2的资料实在是太少太少了ps:包括国外也不多。。。。我都怀疑我是第一个吃螃蟹的人。。。写这篇博客 也是希望记录一下下次可以在回来查看。备忘。。哈哈。原文地址https://www.cnblogs.com/GuZhenYin/p/10790956.html.NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com