Net Framework 4.8下EF6 EDMX T4模板报错:_generationEnvironment为Null
解决EDMX无法生成实体类且T4模板GenerationEnvironment为空的问题
重置T4代码生成模板
备份当前的Model.tt和Model.Context.tt文件后,删除这两个文件。右键EDMX文件,选择「添加代码生成项」,重新选择对应版本的EF DbContext生成器(比如EF 6.x DbContext Generator),生成新的模板文件后,右键模板文件执行「Run Custom Tool」。修复T4模板的GenerationEnvironment获取逻辑
打开Model.tt,找到抛出空引用异常的那段反射代码:public StringBuilder GenerationEnvironment { get { return (StringBuilder)_generationEnvironment.GetValue(_instance, null); } }直接替换为T4模板内置的属性调用,因为T4运行环境本身提供该属性,无需反射获取:
public StringBuilder GenerationEnvironment { get { return this.GenerationEnvironment; } }保存后再次执行「Run Custom Tool」。
清理项目缓存与VS环境
- 关闭Visual Studio,删除项目目录下的
.vs隐藏文件夹、bin和obj目录 - 重新打开项目,执行「生成→清理解决方案」,再重新生成整个解决方案
- 若问题依旧,可尝试重置VS用户数据:打开命令提示符执行
devenv /resetuserdata(注意备份个人VS配置)
- 关闭Visual Studio,删除项目目录下的
验证EDMX文件完整性
用文本编辑器打开EDMX文件,检查XML格式是否合法(无未闭合标签、非法字符),确认SSDL、CSDL部分的实体定义与数据库表匹配。若EDMX存在损坏,尝试从备份恢复,或重新创建仅包含必要表的EDMX模型。匹配EF工具与项目引用版本
确保Visual Studio中安装的Entity Framework工具版本,与项目NuGet引用的EF版本完全一致。可通过「工具→扩展和更新」检查EF工具是否需要更新或重新安装。
内容的提问来源于stack exchange,提问作者Serexx
相关产品推荐
相关产品推荐

