经过多次尝试,我找到了一种使vs2019与MySql和EF6协同工作的方法,至少在“数据库优先”方面如此。
1) 删除VisualStudio中的mysql
2) 删除mysql连接器net
3) 安装mysql for visualstudio 2.0.5
4) 安装mysql连接器net 6.10.8
5) 使用框架4.5.2创建新的C#项目
6) 通过Nuget添加Microsoft Entity Framework 6.2.0
7) 通过Nuget添加MySql.Data.Entity 6.10.8
8) 打开App.config。这一行错误:
<provider invariantName="MySql.Data.MySqlClient" ...
add the missing '/' at the end and delete '</provider>'
9) 构建解决方案
现在添加一个新的ADO.Net实体数据模型,您应该能够使用您的mysql数据库
看起来Oracle还没有为Visual Studio 2019提供官方的MySQL支持。你可能需要等待新版本并暂时使用Visual Studio 2017。
我发现MySQL安装程序检查一组注册表键来检测Visual Studio(它只支持到Visual Studio 2017)。
示例检测键:[HKEY_CLASSES_ROOT\VisualStudio.DTE.15.0]
我伪造了Visual Studio 2017密钥,安装检查成功,并在完成安装后,MySQL工具出现在Visual Studio 2019中。
我的伪造注册表文件只是我注册表中已有的Visual Studio 2019密钥的导出 - 然后我更改了版本号,使其看起来像MySQL安装程序正在寻找的Visual Studio 2017密钥。合并编辑过的注册表文件会将虚假的Visual Studio 2017密钥添加到注册表中,并保留现有的Visual Studio 2019密钥。
这让我获得了MySQL工具栏和添加数据连接功能。我将EF6和Oracle MySql.Data.EntityFramework NuGet包添加到控制台应用程序中,EF部分也可以正常工作。
以下是注册表文件内容 - 我将我的.reg文件中导出的DTE.16.0值更改为DTE.15.0(即MySQL正在寻找的旧密钥),并将文本和GUID保留为Visual Studio 2019:
REGEDIT4
[HKEY_CLASSES_ROOT\VisualStudio.DTE.15.0]
@="Microsoft Visual Studio DTE Object"
[HKEY_CLASSES_ROOT\VisualStudio.DTE.15.0\CLSID]
@="{2E1517DA-87BF-4443-984A-D2BF18F5A908}"