释义:
ADO.NET Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案。该框架曾经为.NET Framework的一部分,但version 6之后从.NET Framework分离出来。
背景:
公司使用的时老版本的EF框架,最新用vs2017生成model,从数据库更新模型之后,发现会产生两个CPOE_THIS5.tt文件,编译之后的model调用时找不到命名空间,仔细观察发现,旧版本在CPOE_THIS5.Designer.cs文件生成代码,从数据库更新模型之后,CPOE_THIS5.Designer.cs文件中的代码没有了,所有的代码都生成到CPOE_THIS5.tt文件中。
CPOE_THIS5.Designer.cs文件中的内容如下:
// 为模型“D:\Winning.Model.Cpoe\CPOE_THIS5.edmx”启用了 T4 代码生成。
// 要启用旧代码生成功能,请将“代码生成策略”设计器属性的值
// 更改为“旧的 ObjectContext”。当在设计器中打开该模型时,此属性会出现在
// “属性”窗口中。
// 如果没有生成任何上下文和实体类,可能是因为您创建了空模型但是
// 尚未选择要使用的实体框架版本。要为您的模型生成一个上下文类和实体
// 类,请在设计器中打开该模型,右键单击设计器图面,然后
// 选择“从数据库更新模型…”、“从模型生成数据库…”或“添加代码生成
// 项…”。
这里面的内容提示的很明确,要启用旧代码生成功能,请将“代码生成策略”设计器属性的值更改为“旧的 ObjectContext”
可还是一直没有找到到底如何修改“代码生成策略”。
其实上面的提示也很明显了,但是不仔细琢磨,还真转不过这个弯。
“当在设计器中打开该模型时,此属性会出现在“属性”窗口中。”
如果还不明白,那么一定要看下面的图片了,因为我从遇到这个问题,到今天决心要解决他,也是经历了好久的历程。
修改代码生成策略为“旧的ObjectContext之后”,CPOE_THIS5.Designer.cs中自动生成对象的代码,删除后缀[.tt]的文件,编译得到可用的Model文件。
①双击解决方案资源管理器的“CPOE_THIS5.edmx”对象,在设计器中打开“CPOE_THIS5.edmx[关系图1]”,空白处右键菜单打开属性窗口。
②在打开的属性窗口中,可以看到“代码生成策略”,修改为你想要的策略。