1

我刚开始在 WebMatrix 上工作,我完成了教程来学习基础知识,然后我从这个教程开始在 WebMatrix 上使用实体框架(注意:该教程适用于 WebMatrix 1,但我看到的唯一改变是将助手安装到项目中的方式)。问题是,我安装了 Entity Framework 帮助程序,但我的项目无法识别 EntityFramework.dll。

我得到这个错误The type or namespace name 'MaxLength' could not be found (are you missing a using directive or an assembly reference?)。但是 EntityFramework.dll 确实出现在我的 bin 文件夹中,这是怎么回事?我不明白为什么参考不起作用。

这是根据第二个教程和安装 EntityFramework 帮助程序后的我的 Web.config 文件:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
  </configSections>
  <system.web>
    <compilation debug="true" targetFramework="4.0"><assemblies><add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /><add assembly="System.ComponentModel.DataAnnotations, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /></assemblies></compilation>
  </system.web>
  <connectionStrings>
    <add name="BookContext" connectionString="Data Source=|DataDirectory|Books.sdf" providerName="System.Data.SqlServerCe.4.0" />
  </connectionStrings>
</configuration>

这是编译器输出链接

我错过了什么吗?为什么我的项目无法正确识别 EntityFramework.dll?

更新

我认为当我从 Visual Studio 2012 中创建的网页项目中复制 EntityFramework.dll 时问题已解决,但即使不再显示错误,WebMatrix 仍然无法识别 Table、Column、ForeignKey、InverseProperty 等注释,等等

我真的不明白,创建了一个简单的数据库,但我不能使用 EntityFramework 注释来指定数据库所需的所有内容。WebMatrix 应该识别 EntityFramewor.dll 但它不是。我需要帮助,因为我真的迷路了。

4

1 回答 1

2

您看到的错误是您站点上安装的 EntityFramework 版本的最终结果。

EntityFramework 5.0 包安装 EntityFramework.dll 的 4.4 或 5.0 版本,具体取决于项目所针对的 .NET 版本(4.0 或 4.5)。

根据我的经验,从 WebMatrix 中的 NuGet 库安装 EntityFramework 总是将 EntityFramework.dll 的 4.4 版复制到 bin 文件夹中:您可以查看属性 --> EntityFramework.dll 文件的详细信息来检查它。

我知道的唯一解决方案是使用 VisualStudio Express 或其他独立实用程序下载 EntityFramework v.5.0(查看这篇文章:在 Webmatrix 2 RC 中安装 Entity Framewok v5),然后简单地用这个替换 WebMatrix 中 NuGet Gallery 安装的 dll。

更新

使用 EntityFramework v.5.0 和 WebMatrix 试验的其他问题是类型“System.Data.EntityState”是在未引用的程序集中定义的,并且需要 DataAnnotations.Schema 的 using 指令

第一个问题已解决,添加以下对 web.config 的引用(查看无法加载文件或程序集 'System.Data.Entity):

<add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />

第二个问题需要添加指令

using System.ComponentModel.DataAnnotations.Schema;

到代码。

无论如何,在我看来,WebMatrix 不是基于 EntityFramework 开发网站的正确工具。

于 2012-12-12T12:59:23.483 回答