2013-10-26 89 views
6

我正在使用VS 2013和SQL Svr 2012并尝试使用EF填充GridView。由于这是一个非常简单的测试,因此我只有一个表格,其中包含一个键和一些数据字段。创建模型的过程似乎工作正常 - 它在设计器视图中按预期显示,文件在app_code中创建,bin文件夹使用2个dll创建,配置文件使用连接字符串和其他条目更新。Visual Studio 2013和实体框架

当我尝试选择“命名连接”时,出现“无法加载指定的元数据资源”的错误,并讨论重建项目以获取程序集。

我花了阅读其他情况下,像这样小时,我无法理解:

  1. 为什么当它是从来没有VS问题2010

  2. 如何解决这种情况的发生连接字符串指向它想要的资源。我完全丧失了关于完全合格的组装名称的所有技术建议 - 我没有尝试过。

  3. 如何设置一些参数来强制资源在适当的位置?我所读过的建议似乎并不与VS涉及非常好2013

我需要决定是否我应该卸载VS 2013和使用VS 2012目前,我正在使用VS 2010 ASP 4.0和我想转移到ASP 4.5并且通常跟上微软技术。但是,我没有技能水平来处理VS版本的问题。在我看来,这个EF执行可能是由于我的电脑上有一个错误或者一些奇怪的错误 - 我试图弄清楚是哪种情况。我在过去没有这些工具的干净机器上安装了VS 2013 Express和SQL Svr 2012。

我真的很想看到有人谁是非常熟悉的Visual Studio试图复制我的问题,因为它仅需要几分钟的时间这样做:

  1. 在MS SQL Server上,创建一个微小DB带有一个包含主键和几个数据字段并包含一些测试数据的表 - 使用TestTable1将其称为TinyDB。

  2. 使用VS 2013 Express for Web,使用VB创建“ASP空网站”选项的“新网站”。

  3. 添加一个包含“ADO.Net实体数据模型”的ASP App_Code文件夹,并将其名称保留为“模型”。

  4. 从数据库生成模型,为“TinyDB”创建一个“新连接”并使用Entity Framework 6.0,然后选择“TestTable1”。请注意,命名空间是“TinyDBModel”。点击“完成”将在App_Code,其他文件夹中生成多个项目并更新web.config。

  5. 添加一个名为default.aspx的Web窗体并将GridView拖到它上面。在gridview的设计模式中,选择“新数据源”,然后选择“实体”选项(注意出现在default.aspx中的EntityDataSource1的名称)。点击下一步,在“命名连接”下选择“TinyDBEntities” - 这是我的地方得到错误“无法加载指定的元数据资源”。

请注意,VS 2010中的这个确切练习完美地工作,并产生一个显示正确数据的网格。

回答

8

不幸的是,EntityDataSource控件不适用于最新版本的实体框架EF6。希望控制器在VS或EF的未来更新版本中获得更新,但现在你不能一起使用这两者。

有几个解决方案/备选方案:

  1. 回落到EF 5.为了做到这一点,删除App_Code文件夹中的.edmx和.TT文件,删除从该EF组件Bin文件夹,并从web.config中删除对EF的引用。然后重新构建网站,添加一个新的ADO.NET实体模型并在Choose Your Version对话框中选择版本5。然后从App_Code文件夹中删除.tt文件,打开EDMX对话框,右键单击一个空白区域,并在Properties Grid上将Code Generation Strategy设置为Legacy ObjectContext。然后再次重建,它应该工作。

  2. 使用模型绑定。这确实是推荐的解决方案。 Microsoft/EF团队建议人们远离EntityDataSource控件并仅将其用于动态数据网站,模型绑定是首选解决方案。它非常干净且简单易用,并且可以让您对查询和对象更新进行很多控制。有关模型绑定的详细信息,请访问:http://www.asp.net/web-forms/tutorials/data-access/model-binding/retrieving-data

+1

嗨内蒙古自治区 你的第一个建议完美的作品,我会在第二个建议追求的模型绑定教程 - 非常感谢你!我应该注意,你的步骤需要遵循给定的顺序(在更改EDMX属性之前删除.tt)。此外,配置文件的自动EF更新需要剪贴 - 将ConfigSections移回到文件的开头 - 至少在我的小测试中。 您的详细解决方案以及您对更广泛问题的洞察力是最受赞赏的! –

相关问题