18

过去我已经成功创建了 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 操作是读取。显然必须有一种方法可以使用新的 EF 6.0 框架(Pawel 建议我使用 MVC),但他们不能完全打破我的场景(使用网站),对吗?

编辑4:

我找到了适合我的方案的解决方案,请参阅下面的答案。

4

6 回答 6

13

我已经有 VS2013 社区,我正在与同样的问题作斗争。就像您的图像一样,代码生成策略已禁用,我的意思是,无法更改,但是...右键单击属性名称“代码生成策略”,然后单击“重置”,属性值将更改到旧版 ObjectContext!

我希望它可以帮助某人!

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

于 2015-04-27T00:04:13.173 回答
12

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

编辑

支持 EF6 的 EntityDataSourceControl 预览版现已推出

于 2013-10-15T20:48:29.563 回答
4

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

于 2014-12-16T21:28:09.757 回答
1

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

<providers>
  <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>

现在,当我添加 ADO.NET 实体数据模型时,它会询问我要使用哪个版本的实体框架,但实体框架 6.0 是灰色的。这显然是一个错误,它应该在安装 EF 6.0 时询问此问题,而不是在未安装时询问。安装时它从来没有问过我想要什么版本,只是自动为 6.0 版创建了一个 edmx

于 2013-10-16T18:23:26.507 回答
0

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

我的步骤(重现错误):

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

创建一个default.aspx页面,从工具箱中拖动EntityDataSource,点击弹出的Configure DataSource,从上面选择我命名的Connection,我得到错误:

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

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

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

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

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

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

于 2013-12-01T13:26:52.753 回答
0

我正在使用视觉工作室 2015

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

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

  3. 查找“代码生成策略”属性 - 从下拉列表中选择值 T4 到 Legacy Object Content。

于 2015-10-01T20:24:57.403 回答