首页 > 解决方案 > 如何在 NET 5 项目中使用标准 2.0 实体框架库?

问题描述

我有 .net framework 4.8 和一个 NET 5 项目,我都想将 netstandard 2.0 库与 Entity Framework 一起使用。

标准 2.0 参考,最新版本有效:

<PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.2.6" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.2.6" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.2.6">

NET 5 参考资料:

<PackageReference Include="Microsoft.EntityFrameworkCore" Version="5.0.7" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="5.0.7">
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="5.0.7" />

NET 5 项目引用了 netstandard 2.0 库

然后我可以只使用基本的脚手架参数来搭建脚手架

Scaffold-DbContext“数据源=SQLSERVER2019.xyz.local;数据库=FlexEF;Trusted_Connection=True”Microsoft.EntityFrameworkCore.SqlServer

但是我的上下文类充满了错误,例如:

错误 CS1660 无法将 lambda 表达式转换为类型“字符串”,因为它不是委托类型

错误 CS1061“EntityTypeBuilder”不包含“HasNoKey”的定义,并且找不到接受“EntityTypeBuilder”类型的第一个参数的可访问扩展方法“HasNoKey”(您是否缺少 using 指令或程序集引用?)

错误 CS1061“PropertyBuilder<short?>”不包含“HasComment”的定义,并且找不到接受“PropertyBuilder<short?>”类型的第一个参数的可访问扩展方法“HasComment”(您是否缺少 using 指令或装配参考?)

我误解了什么?

标签: c#entity-framework.net-5.net-standard-2.0

解决方案


所以事实证明,在我的上下文中,我只需要使用这个

使用 Microsoft.EntityFrameworkCore;

在 NET5 中我只需要引用 3 个包,在 Standard2.0 中我需要添加更多的包,这些包显然属于同一个命名空间。

如:

Microsoft.EntityFrameworkCore.Abstractions Microsoft.EntityFrameworkCore.Design

等等等等

叹...


推荐阅读