首页 > 解决方案 > EF6 库迁移到 .net 标准 2.1 - .dll 中不包含 EDMX 资源

问题描述

我有一个完全用 .Net 编写的库,我必须迁移到 .Net Standard 2.1 - 我已经在较小的项目上验证了我的流程,从编码和 .csproj 的角度来看,一切都很好。

问题:这个库使用 EF6 围绕第 3 方 SQL 数据库,所以我必须坚持Database-First模型,并且我需要在我的连接字符串中提供元数据以显示 .csdl、.msl 和 .ssdl 资源.

该项目是多目标 .Net 4.7.2 和 .Net Standard 2.1 并比较 dotPeek 中的输出我可以清楚地看到新输出中缺少这些资源:

在此处输入图像描述

我尝试了什么:

仔细检查“元数据工件处理”是否设置为“嵌入输出程序集”。

验证 .Net 4.7.2 输出按预期工作。

我尝试在连接字符串中指定资源,例如:

metadata=res://*/;provider=...

但这只会引发不同的错误:

Argument 'xmlReader' is not valid. A minimum of one .ssdl artifact must be supplied

任何想法将不胜感激,非常感谢。

标签: c#entity-frameworkentity-framework-6connection-string.net-standard

解决方案


我以一种奇怪的方式通过交换目标框架解决了这个问题......

从:

<TargetFrameworks>net472;netstandard2.1</TargetFrameworks>

到:

<TargetFrameworks>netstandard2.1;net472</TargetFrameworks>

它刚刚开始正确地包含资源......奇怪但它有效!


推荐阅读