You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET项目Model.tt运行转换时System.NullReferenceException错误求助

解决EF6 T4模板(Model.tt)空引用编译错误

检查.edmx文件有效性

  • 右键.edmx文件,选「打开方式」→「XML(文本)编辑器」,排查是否有XML格式错误(比如未闭合标签、缺失命名空间),这类错误会导致T4模板读取元数据时触发空引用。
  • 确认.edmx的「Custom Tool」属性值为EntityModelCodeGenerator:右键.edmx→「属性」查看,若不对手动修改后保存,触发模板重新关联。

修复Model.tt与.edmx的关联

  • 打开Model.tt,检查顶部是否存在<#@ include file="EF6.Utility.CS.ttinclude" #>,且路径正确。该文件缺失或路径错误会导致模板无法加载EF工具类,引发空引用。
  • 确认Model.tt里的<#@ input type="Text" file="你的模型名.edmx" #>指向正确的.edmx文件,文件名和路径要完全匹配(包括大小写)。

清理后重新生成模板

  • 删除Model.tt、Model.Context.tt生成的所有.cs文件(包括你手动复制的Model.cs),右键Model.tt→「运行自定义工具」,让模板重新生成代码——手动复制的代码可能和当前.edmx元数据不匹配,反而干扰模板运行。
  • 执行「生成」→「清理解决方案」,再「生成解决方案」,清除旧编译缓存。

检查EF6版本兼容性

  • 确认项目中EntityFramework NuGet包是6.x版本,且与.NET Framework 4.x兼容(EF6最低支持.NET 4.0)。版本不匹配的话,卸载后重装对应版本:
    Uninstall-Package EntityFramework
    Install-Package EntityFramework -Version 6.4.4
    

进阶:调试T4模板

  • 若以上方法无效,修改Model.tt第一行为<#@ template language="C#" debug="true" hostspecific="true"#>,右键Model.tt→「调试T4模板」,启动VS调试器跟踪空引用的具体触发位置,定位哪行代码访问了null对象。

内容的提问来源于stack exchange,提问作者Steve

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 06:59:56