从T4更改EF 6代码生成策略

在过去,我已经成功创建了edmx文件。 这是使用EF5和Visual Studio 2012.我已经升级到Visual Studio 2013和EF6。 现有的EF 5代码仍然有效,但现在我遇到了问题。 我可以创建edmx文件和EntityDataSource,我可以配置数据源,它可以很好地查看表和列,但是当我尝试刷新模式时,我得到:

由于EntityDataSource的以下错误,无法确定架构:

找不到CLR类型(我的类型在这里)

我已经看到一个解决方案在线告诉我将我的代码生成策略更改为默认值(在EF 5中创建的现有edmx文件被设置为Legacy ObjectContext),但它不会让我这样做,因为选项’T4’是变灰了。

在此处输入图像描述

有没有办法可以强制代码生成策略不使用T4?

编辑:

Pawel声称EntityDataSource不支持EF 6.是否有可用的教程显示如何连接到EF 6的简单分步指南? 我从“Beginning ASP.Net 4”一书中获得了所有的EF信息,但现在显然已经过时了。 我看到EF 6仍然处于测试阶段。 也许他们会在某个阶段添加对EntityDataSource的支持?

编辑2:

好吧,我已经习惯了这一点,我可以使用LinqDataSource进行连接。 我几天都没有机会玩它,但它看起来很有效。

编辑3:

使用LinqDataSource不起作用。 它可以执行的唯一CRUD操作是Read。 显然必须有一种方法来使用新的EF 6.0框架(Pawel建议我使用MVC),但它们不能完全打破我的场景(使用网站),是吗?

编辑4:

我已经为我的场景找到了解决方案,请参阅下面的答案。

如果在VS2012 / VS2013中使用EF6,由于EF6的变化,唯一支持的生成策略是T4。 您可以使用VS Gallery中的T4模板获取基于EntityObject的实体和基于ObjectContext的上下文。 注意:EntityDataSource目前不支持EF6。

编辑

现在可以预览具有EF6支持的EntityDataSourceControl

我已经拥有了VS2013社区,我正在为同样的问题而斗争。 就像您的图像一样,代码生成策略被禁用,我的意思是,它无法更改,但是……右键单击属性名称“代码生成策略”,然后只需单击“重置”,属性值将更改到Legacy ObjectContext!

我希望它可以帮助别人!

PD:对不起,我的英语太棒了! XP

在Ef6中,您可以使用遗留上下文。 只需右键单击edmx文件,然后在打开时使用选项在XML查看器中打开它。 然后搜索legacy并将其值设置为true。

正如Pawel所提到的那样,你只能在EF 6中使用T4。我使用EF 5将我的系统重新用于卸载EF 6,使用NuGet包管理器(网站 – >管理NuGet包 – >安装包 – > EntityFramework – >卸载)。 然后我不得不使用NuGet包管理器添加EF 5(相同的菜单,但在线而不是已安装的包)。 然后我不得不从web.config中删除以下内容:

   

现在,当我添加一个ADO.NET实体数据模型时,它会询问我想要使用的entity framework版本,但entity framework6.0显示为灰色。 这显然是一个错误,它应该在安装EF 6.0时问这个问题,而不是在安装EF 6.0时问。 当它安装时,它从未询问我想要的版本,只是自动为6.0版创建了一个edmx

我有相同的问题和(EF6),当我将元数据工件处理更改为“复制到输出目录”时,我仍然得到相同的错误。 这已被建议作为我的大多数问题的解决方案。

我的步骤(重现错误):

创建一个名为DAL的目录,添加edmx文件,允许它创建连接字符串,添加两个表,构建。

创建一个default.aspx页面,从工具箱中拖动EntityDataSource,单击弹出配置数据源,从上面选择我的命名连接,然后我收到错误:

无法加载连接字符串中指定的元数据。 考虑重建Web项目以构建可能包含元数据的程序集。 发生以下错误:提供程序未返回ProviderManifest实例。

一直试图找到解决方案约24小时。

所以现在当我选择EF5(而不是6)并且我做了上面的步骤时,我右键单击图表面并转到属性我改变了两个设置:

1.)“复制到输出目录”的工件处理2.)从T4将代码生成策略更改为“Legacy ObjectContext”

这允许我从工具箱中拖动EntityDataSource,单击弹出配置数据源,从上面选择我的命名连接,一切都回到爱的世界编程……

只花了我24个小时和2个浪费的编码日来最终拼凑出合适的解决方案。 而我的笔记本电脑变得扁平并重新安装,b / c我非常绝望,把我的头发拉了出来。

我正在使用visual studio 2015

  1. Dbl单击解决方案资源管理器中的xxx.edmx文件,这应该在设计器中打开diagarm,

  2. 按alt + enter打开属性窗口

  3. 查找“代码生成策略”属性 – 从下拉列表中选择值T4以保留旧对象内容。