关于VS2022使用EF生成实体模型报错的问题:运行转换:System.NullReference
|
起因:
之前版本vs2022生成EF模型一直没有问题,在更新了最新的vs2022之后,版本号17.6+,出现此问题:- 运行转换:System.NullReferenceException:对象引用未设置为对象的示例。
- 在Microsoft.VisualStudio.TextTemplatingD21DB4521EFD493FAE41A9CE9DA80C875F3084552987498BD518713BDE91D14AF116D5B591FBF7D992E37AB98D0755C27E1BD3D907AED6618E5F11743F78068A.GeneratedTextTransformation.DynamicTextTransformation.get_GenerationEnvironment()中使用C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\Extensions\Microsoft\Entity Framework Tools\Templates\Includes\EF6.Utility.CS.tt包括:Microsoft.VisualStudio.TextTemplatingD21DB4521EFD493FAE41A9CE9DA80C875F3084552987498BD518713BDE91D14AF116D5B591FBF7D992E37AB98D0755C27E1BD3D907AED6618E5F11743F78068A.GeneratedTextTransformation.EntityFrameworkTemplateFileManager..ctor(Object textTransformation)in C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\Extensions\Microsoft\Entity Framework Tools\Templates\Includes\EF6.Utility.CS.tt包括:第1665行,位于Microsoft.VisualStudio.TextTemplatingD21DB4521EFD493FAE41A9CE9DA80C875F3084552987498BD518713BDE91D14AF116D5B591FBF7D992E37AB98D0755C27E1BD3D907AED6618E5F11743F78068A.GeneratedTransformation.TextEntityFrameworkTemplateFileManager.VsEntityFrameworkTemplateFileManager..ctor(Object textTemplating)(C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\Extensions\Microsoft\Entity Framework Tools\Templates\Includes\EF6.Utility.CS.tt包括:Microsoft.VisualStudio.TextTemplatingD21DB4521EFD493FAE41A9CE9DA80C875F3084552987498BD518713BDE91D14AF116D5B591FBF7D992E37AB98D0755C27E1BD3D907AED6618E5F11743F78068A.GeneratedTextTransformation.EntityFrameworkTemplateFileManager.Create(Object textTransformation)in C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\Extensions\Microsoft\Entity Framework Tools\Templates\Includes\EF6.Utility.CS.tt包括:Microsoft.VisualStudio.TextTemplatingD21DB4521EFD493FAE41A9CE9DA80C875F3084552987498BD518713BDE91D14AF116D5B591FBF7D992E37AB98D0755C27E1BD3D907AED6618E5F11743F78068A.GeneratedTextTransformation.TransformText()in C:\XTAN\Code\ConsoleAppTest\TestModel.tt:第10行杂项文件C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\Extensions\Microsoft\Entity Framework Tools\Templates\Includes\EF6.Utility.CS.ttinclude 1928
复制代码 同样操作,以前是可行的,但是更新完之后就不行了。经排查,受到一位大佬的启发,此为vs2022工具问题,微软官方暂时没有给出解决方案。
如果想要避免此错误:
方案如下:
方案一:
不要更新最新版,回退之前版本
方案二:
修改配置文件:
具体文件在你的vs安装目录下,这是默认安装路径
C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\Extensions\Microsoft\Entity Framework Tools\Templates\Includes
在这个目录下有一个文件名为EF6.Utility.CS.ttinclude的配置文件
需要找到以下内容进行修改:
大约在1920行左右,需要将1920行的内容修改为1922行的内容即可。
可以在文件中搜索DynamicTextTransformation这个方法,然后找到_generationEnvironment,修改里面的内容,
内容修改为_generationEnvironment = type.GetProperty("GenerationEnvironment");
附上具体的方法代码:
- private DynamicTextTransformation(object instance)
- {
- _instance = instance;
- Type type = _instance.GetType();
- _write = type.GetMethod("Write", new Type[] { typeof(string) });
- _writeLine = type.GetMethod("WriteLine", new Type[] { typeof(string) });
- //_generationEnvironment = type.GetProperty("GenerationEnvironment", BindingFlags.Instance | BindingFlags.NonPublic); //此为原来的代码
- //_generationEnvironment = type.GetProperty("GenerationEnvironment",BindingFlags.Instance| System.out.println); //这一行是测试代码,经测试,这个方法也不行
- _generationEnvironment = type.GetProperty("GenerationEnvironment"); //这个是正确代码,使用这行代码,可行
- _host = type.GetProperty("Host");
- _errors = type.GetProperty("Errors");
- }
复制代码 修改之后保存,重启vs,重新创建项目即可解决问题。
翻译
搜索
复制
来源:https://www.cnblogs.com/xiaolong666/archive/2023/06/12/17475371.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|
|
|
发表于 2023-6-12 15:46:47
举报
回复
分享
|
|
|
|