Entity Framework添加实体数据模型缺失Context.tt与Model.tt文件
EF6在Azure Function项目中缺失实体类与上下文自动生成文件的解决方案
前置说明
你当前使用的Visual Studio 16.11.5、EF6 6.4.4版本本身兼容代码自动生成逻辑,问题出在项目配置或生成策略设置上。
解决步骤
1. 检查模型创建时的代码生成策略
重新运行「ADO.NET Entity Data Model」创建向导,在代码生成策略步骤,不要选择「无代码生成」,保持默认的生成策略即可。
2. 手动触发T4模板生成
右键已生成的.edmx文件,选择「运行自定义工具」,手动触发代码生成逻辑,查看是否生成缺失的实体类和上下文文件。
3. 修正edmx文件属性配置
- 右键
.edmx文件选择「属性」 - 确认「自定义工具」字段的值为
EntityModelCodeGenerator,如果为空则手动填入后保存 - 再次右键
.edmx选择「运行自定义工具」
4. 调整项目文件启用T4生成权限
Azure Function项目默认可能禁用构建时的T4模板转换,打开项目的.csproj文件,添加以下配置节点:
<PropertyGroup> <TransformOnBuild>true</TransformOnBuild> <OverwriteReadOnlyOutputFiles>true</OverwriteReadOnlyOutputFiles> <TransformOutOfDateOnly>false</TransformOutOfDateOnly> </PropertyGroup>
保存项目文件后重新生成项目,触发代码生成。
5. 高版本.NET Azure Function的适配处理
EF6原生T4代码生成仅支持.NET Framework运行时,如果你的Azure Function项目基于.NET Core/.NET 5+运行时,有两种解决路径:
- 将项目切换为.NET Framework运行时的Azure Function v1版本
- 放弃原生自动生成,改为手动编写实体类和上下文代码,或迁移到Entity Framework Core使用Scaffold命令生成代码
内容的提问来源于stack exchange,提问作者slyp93
相关产品推荐
相关产品推荐

