【问题标题】:how to use EF6.0 in .netframework 4.6.2 class library project referenced inside ASPNET Core 2.0 project如何在 ASP NET Core 2.0 项目中引用的 .net framework 4.6.2 类库项目中使用 EF6.0
【发布时间】:2018-12-07 15:22:40
【问题描述】:

我正在尝试在类库项目 .Net Framework 4.6.2(存储库项目)中使用 EF6.0,其中 DBContext 位于存储库旁边,并且实体已在不同的项目中创建(.NET 框架 4.6.2)使用反向代码优先 POCO, 存储库将通过在 ASPNET Core 2.0 SPA 项目中引用的另一个(框架 4.6.2)管理器项目调用,其中 StructureMap 用作 IoC。

我遇到的第一件事是将连接字符串传递给存储库项目中的 DBContext 的问题,因为我想在存储库项目中注册服务(DBContext,Repository)而不是从 ASPNET Core Startup.cs,原因那是为了避免将 DBContext 暴露给前端项目,无论如何我最终还是暂时硬编码了 Repo Project 中的连接字符串,“如果有其他方法,请欣赏!”

我在这个设计中面临的主要问题是,当请求发送收集“产品”列表时,它到达了 Linq 语句使用 _dbcontext.Product 的存储库项目,然后抛出错误消息

NotSupportedException:无法确定“System.Data.SqlClient.SqlClientFactory”类型的提供程序工厂的提供程序名称。确保在应用程序配置中安装或注册了 ADO.NET 提供程序。

Entityframework 注册在 Repository 项目中,但不在 ASPNET Core 2.0 项目中,因为它在安装到 ASPNET Core 2.0 时会显示 Nuget 冲突错误。

我也尝试在 ASPNET Core2.0 中从 Nuget 安装“System.Data.SqlClient”,但仍然抛出错误。

关于如何在 ASPNET Core 2.0 项目中引用的 .netframework 4.6.2 类库项目中使用 EF6.0 的任何想法。

【问题讨论】:

    标签: entity-framework-6 asp.net-core-2.0 ef-core-2.0


    【解决方案1】:

    Microsoft 文章 Get Started with ASP.NET Core and Entity Framework 6 包含从 ASP.NET Core 项目中使用 Entity Framework 6 所需的步骤。

    关于NotSupportedException,我会参考相关问题System.NotSupportedException: Unable to determine the provider name for provider factory of type 'System.Data.SqlClient.SqlClientFactory'

    我遇到了同样的问题,因为我未能将 Core .csproj 文件从 <TargetFramework>netcoreapp2.2</TargetFramework> 更改为 <TargetFramework>net471</TargetFramework>(文章告诉我这样做,但出于某种原因,我认为在 Core 2.2 中没有必要)。

    我在posted explanation/answer 中为我上面提到的问题提供了更多解释和细节。

    【讨论】:

      猜你喜欢
      • 2018-05-01
      • 1970-01-01
      • 2017-09-15
      • 1970-01-01
      • 1970-01-01
      • 2018-06-30
      • 1970-01-01
      • 2018-02-06
      • 1970-01-01
      相关资源
      最近更新 更多