EntityFramework :旧的ObjectContext和T4模板

更新数据库之后发现 代码生成策略是T4且不能修改

以xml方式打开edmx文件找到代码生成策略属性,value是无

尝试删除自动生成的文件,在打开的edmx中右键添加代码生成项,我这里有一个ef6.0的EntityObject生成器,选择生成之后发现生成的虽然是ObjectContext,但是命名空间是在System.Data.Entity.Core.Objects

不是System.Data.Objects

接着去安装了一个ef5.0的EntityObject生成器,没毛病,和原来的一样了。

于是再重新添加ADO实体模型,发现没有出现选择ef5.0,ef6.0的那一步,估计是默认6.0了,于是把引用里的6.0去掉了,再来一遍,出现了,不过只剩5.0了,6.0变灰了,生成之后,再打开edmx的属性找到代码生成策略,这下可以直接选择旧的ObjectContext了

T4和旧的ObjectContext随意切换。

问题1:为啥添加6.0的引用后直接默认6.0了,添加实体模型的时候怎么就不给选了,哪里有个设置开关???

更新1-----------------------------------------------------------------------

 直接去掉EF6.0的引用就可以选择代码生成策略了,不需要重新添加模型。

问题2:我到底用的是EF的哪个版本?

看App.Config配置,有EF的引用也可以看引用的版本。另项目的.Net版本也是一个参考:(以下摘自微软官网)

实体框架于 2008 年首次发布,作为.NET Framework的一部分。 此后,它经历了几个演变:

  • 实体框架和 Entity Framework 4 的第一个版本完全包含在.NET Framework
  • Entity Framework 4.1、4.2、4.3 和 5.0 在.NET Framework中有一些代码,某些代码作为NuGet包提供
  • 实体框架 6.0、6.1、6.2、6.3 和 6.4 完全作为NuGet包提供
  • Entity Framework Core (所有版本) 是完全独立的代码库,作为NuGet包提供

我之前的是6.1.3,折腾一番后变成了4.4.0,明明我选的是5.0,可能因为我的.net是4.0 client?目前还搞不清楚

问题3:生成的实体模型的命名空间和什么有关系,由什么决定?ef版本还是代码生成策略或者共同?

posted @ 2022-05-26 11:49  keedy  阅读(124)  评论(0)    收藏  举报