如何在.NET Core 2.1中引用采用Database First模式的EF项目程序集
解决方案
可以在.NET Core 2.0 Web应用中引用包含EF Database First生成实体类的数据库基础项目,核心需要做好EF版本适配和依赖注入配置,具体操作如下:
- 第一步:适配类库框架
如果原数据库基础项目是基于.NET Framework开发的类库,可直接将其重定向到.NET Standard 2.0,纯POCO实体类和EF6生成的DBContext几乎不存在兼容问题;如果不想修改原项目框架,ASP.NET Core 2.0也支持直接引用.NET Framework类库,仅需保证你的Core项目运行在Windows平台即可(因为.NET Framework仅支持Windows)。 - 第二步:安装匹配的EF版本
不要使用EF Core操作原EF6生成的DBContext,直接在ASP.NET Core 2.0项目中安装NuGet包EntityFramework6.4以上版本,该版本原生支持.NET Core 2.0运行环境。 - 第三步:配置DBContext注入
- 在Core项目的
appsettings.json中添加数据库连接字符串:
{ "ConnectionStrings": { "MyDbConn": "你的数据库连接字符串内容" } }- 给原有DBContext添加支持传参的构造方法(可写在EDMX自动生成类的分部类里,避免更新模型时被覆盖):
public partial class 你的DBContext类名 : DbContext { public 你的DBContext类名(string connectionString) : base(connectionString) { } }- 在
Startup.cs的ConfigureServices方法中注册DBContext:
public void ConfigureServices(IServiceCollection services) { services.AddMvc(); // 注册DBContext services.AddScoped(_ => new 你的DBContext类名(Configuration.GetConnectionString("MyDbConn"))); } - 在Core项目的
- 第四步:验证调用
注册完成后就可以在控制器、服务类中通过构造函数注入DBContext,和原有MVC项目的使用方式完全一致。
内容的提问来源于stack exchange,提问作者Dinesh M
相关产品推荐
相关产品推荐

