Net Framework 4.8 EF6 EDMX T4 错误 _ GenerationEnvironment 为 NULL [重复]

问题描述 投票:0回答:3

这始于 EDMX 突然不生成类文件。 .context.cs 文件包含类声明,如

  public virtual DbSet<myTable> myTable { get; set; }

但实际的类文件并未生成。两个 .tt 文件都在那里,“运行自定义工具”没有帮助。

在调试 Model.tt T4 模板时声明:

public StringBuilder GenerationEnvironment { get { return (StringBuilder)_generationEnvironment.GetValue(_instance, null); } }

产生

“System.NullReferenceException:'对象引用未设置为 对象的实例。'"

_ GenerationEnvironment 变量为 NULL。

为了确保数据库更改不会触发此问题,我重新创建了模型,其中仅包含一个未修改的表,但没有任何改进。

不幸的是,我没有能力将其转移到代码优先和核心,因此我们将不胜感激地收到任何建议。

entity-framework t4 .net-4.8 edmx edmx-designer
3个回答
31
投票

在最新更新(即 17.6.2)中,

Microsoft.VisualStudio.TextTemplating.GeneratedTextTransformation.GenerationEnvironment
属性访问似乎已从非公开更改为公开

您可以修改

EF.Utility.CS.ttinclude
中的
EF6.Utility.CS.ttinclude
C:\Program Files\Microsoft Visual Studio\2022\Professional\Common7\IDE\Extensions\Microsoft\Entity Framework Tools\Templates\Includes
文件来通过更改

来修复此问题
_generationEnvironment = type.GetProperty("GenerationEnvironment", BindingFlags.Instance | BindingFlags.NonPublic);

_generationEnvironment = type.GetProperty("GenerationEnvironment", BindingFlags.Instance | BindingFlags.Public);

编辑: 看来VS下个版本会修复 https://github.com/dotnet/ef6tools/commit/89cd126fa8ebfd40c3b5e781232be940711cf726


1
投票

这里也有同样的问题。使用 Visual Studio Community 2022 版本 17.6.2

C:\ Program Files \ Microsoft Visual Studio�2 \ Community \ Common7 \ IDE \ Extensions \ Microsoft \ Entity Framework Tools \ Templates \ Includes \ EF6.Utility.CS.ttinclude:第1928行

编辑:回滚到 17.5.3 后问题消失了


1
投票

我确实以一种迂回的方式找到了与答案中相同的内容 - 修复并重新安装 VS 2022(抱歉,可以提到版本)后没有任何效果,并且无法找到回滚的方法社区版本,我重新安装了VS2019,在那里创建了.EDMX模型,没有问题。

我现在在 VS2022 中继续。希望它在下一个版本中得到修复。

© www.soinside.com 2019 - 2024. All rights reserved.