2

我在一个单独的 C# 类库项目中构建了我的实体模型,而不是我的 Web 项目。在我单独的类库项目中,我创建了一些简单的类,它们表示通过 AJAX 传递给客户端的实体类。在简单对象中,我创建了用于查询数据库的上下文。当我从我的 Web 应用程序调用这些类中的方法时,我似乎无法不断收到错误。起初是因为我的 web.config 文件中没有任何内容引用来自项目的连接字符串与实体模型。我将 app.config 文件中的三个标签复制到了 web.config 文件中,但现在我看到一个错误:尝试查询数据库时不支持关键字:'元数据'。

我不确定的一件事是在哪里创建上下文。是否应该在 Web 项目中完成,然后将其传递给类库项目中的方法?当我尝试这种方法时,我收到以下错误:

错误 CS0012:类型“System.Data.Entity.DbContext”在未引用的程序集中定义。您必须添加对程序集“EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”的引用。

如果我在类库项目中创建上下文,则在运行应用程序并尝试查询数据库时,我会得到不支持的关键字:“元数据”错误。所以我不知道该去哪里。我究竟做错了什么?我花了几个小时寻找答案,但是那里有很多信息,我找不到任何具体的信息。

提前致谢。

4

3 回答 3

7

当你使用 EntityFramework 创建类库时,VS 会自动将其添加为安装包,但仅限于类库项目。您必须返回解决方案的 NuGet 包管理器并将该包添加到您的其他项目 在此处输入图像描述

于 2013-07-29T18:05:11.193 回答
0

我通过编辑 web.config 文件来解决这个问题。我需要将 providerName 从 System.Data.SqlClient 更改为 System.Data.EntityClient。我不确定它是如何切换的,但现在它正在工作。还要注意上面的注释,以消除“您必须添加对程序集 'EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.”错误的引用。

于 2013-05-06T19:11:56.937 回答
0

就我而言,我遇到了类似的问题,出现以下错误:

Error   1   The type 'System.Data.Entity.DbContext' is defined in an assembly that is not referenced. You must add a reference to assembly 'EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.    C:\Projects\MyProject\MyProject.Model.Net\ProductManager.cs 16  17  MyProject.Model.Net
Error   2   The type 'System.Data.Entity.DbSet`1<T0>' is defined in an assembly that is not referenced. You must add a reference to assembly 'EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.  C:\Projects\MyProject\MyProject.Model.Net\ProductManager.cs 17  17  MyProject.Model.Net
Error   3   'System.Data.Entity.DbSet`1<MyProject.Data.ProductInventoryView>' does not contain a definition for 'Where' and no extension method 'Where' accepting a first argument of type 'System.Data.Entity.DbSet`1<MyProject.Data.ProductInventoryView>' could be found (are you missing a using directive or an assembly reference?)   C:\Projects\MyProject\MyProject.Model.Net\ProductManager.cs 18  21  MyProject.Model.Net
Error   4   Metadata file 'C:\Projects\MyProject\MyProject.Model.Net\bin\Debug\MyProject.Model.Net.dll' could not be found  C:\Projects\MyProject\MyProject.Web\CSC MyProject.Web

为了解决这个问题,我需要添加 EntityFramework.dll 引用 MyProject.Data 项目,方法是浏览到此目录以选择文件:~\MyProject\packages\EntityFramework.5.0.0\lib\net40\EntityFramework.dll

于 2014-12-03T17:17:08.953 回答