翼度科技»论坛 编程开发 .net 查看内容

关于VS2022使用EF生成实体模型报错的问题:运行转换:System.NullReference

14

主题

14

帖子

42

积分

新手上路

Rank: 1

积分
42
起因:
之前版本vs2022生成EF模型一直没有问题,在更新了最新的vs2022之后,版本号17.6+,出现此问题:
  1. 运行转换:System.NullReferenceException:对象引用未设置为对象的示例。
  2. 在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");
附上具体的方法代码:
 
  1. private DynamicTextTransformation(object instance)
  2. {
  3. _instance = instance;
  4. Type type = _instance.GetType();
  5. _write = type.GetMethod("Write", new Type[] { typeof(string) });
  6. _writeLine = type.GetMethod("WriteLine", new Type[] { typeof(string) });
  7. //_generationEnvironment = type.GetProperty("GenerationEnvironment", BindingFlags.Instance | BindingFlags.NonPublic); //此为原来的代码
  8. //_generationEnvironment = type.GetProperty("GenerationEnvironment",BindingFlags.Instance| System.out.println); //这一行是测试代码,经测试,这个方法也不行
  9. _generationEnvironment = type.GetProperty("GenerationEnvironment");  //这个是正确代码,使用这行代码,可行
  10. _host = type.GetProperty("Host");
  11. _errors = type.GetProperty("Errors");
  12. }
复制代码
修改之后保存,重启vs,重新创建项目即可解决问题。
翻译
搜索
复制

来源:https://www.cnblogs.com/xiaolong666/archive/2023/06/12/17475371.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具