ADO.NET中model.tt组件丢失及System.NullReferenceException报错求助
重新添加数据库后,原本包含表数据的model.tt文件组件消失,同时抛出如下错误:
Severity Code Description Project File Line Suppression State
Error Running transformation: System.NullReferenceException: Object reference not set to an instance of an object.
at Microsoft.VisualStudio.TextTemplating548217BD8377E326AEE514EAE722C9BA6586C4151F980CA7BACC70A5732FC55F588FBC8794326CD64388F9B4C50AD7729497DE610EBC8D6F64F48BB130F68063.GeneratedTextTransformation.DynamicTextTransformation.get_GenerationEnvironment()
at Microsoft.VisualStudio.TextTemplating548217BD8377E326AEE514EAE722C9BA6586C4151F980CA7BACC70A5732FC55F588FBC8794326CD64388F9B4C50AD7729497DE610EBC8D6F64F48BB130F68063.GeneratedTextTransformation.EntityFrameworkTemplateFileManager..ctor(Object textTransformation)
at Microsoft.VisualStudio.TextTemplating548217BD8377E326AEE514EAE722C9BA6586C4151F980CA7BACC70A5732FC55F588FBC8794326CD64388F9B4C50AD7729497DE610EBC8D6F64F48BB130F68063.GeneratedTextTransformation.EntityFrameworkTemplateFileManager.VsEntityFrameworkTemplateFileManager..ctor(Object textTemplating)
at Microsoft.VisualStudio.TextTemplating548217BD8377E326AEE514EAE722C9BA6586C4151F980CA7BACC70A5732FC55F588FBC8794326CD64388F9B4C50AD7729497DE610EBC8D6F64F48BB130F68063.GeneratedTextTransformation.EntityFrameworkTemplateFileManager.Create(Object textTransformation)
at Microsoft.VisualStudio.TextTemplating548217BD8377E326AEE514EAE722C9BA6586C4151F980CA7BACC70A5732FC55F588FBC8794326CD64388F9B4C50AD7729497DE610EBC8D6F64F48BB130F68063.GeneratedTextTransformation.TransformText() Latihan E:\Software project\HovLibrary\Latihan\Model1.tt 1
解决办法
清理重建项目
- 关闭Visual Studio,删除项目目录下的
bin和obj文件夹 - 重新打开项目,右键项目选择「清理」,再选「生成」
- 右键
model.tt文件,选择「运行自定义工具」
- 关闭Visual Studio,删除项目目录下的
检查EDMX文件完整性
重新添加数据库可能导致EDMX损坏:- 右键
model.edmx,选「打开方式」→「XML编辑器」 - 检查是否有缺失的实体、关联或错误XML节点,修复后保存
- 再次运行
model.tt的自定义工具
- 右键
修复Visual Studio文本模板组件
错误可能源于模板引擎异常:- 打开Visual Studio的「工具」→「命令行」→「开发者命令提示符」
- 执行命令:
devenv /installvstemplates - 重启Visual Studio后重试
重新添加实体模型
若以上方法无效,直接重建:- 删除现有
model.edmx、model.tt和model.context.tt文件 - 右键项目→「添加」→「新建项」→选择「ADO.NET实体数据模型」
- 按向导重新连接数据库生成实体类
- 删除现有
内容的提问来源于stack exchange,提问作者DAFDZIKHO

