2010-11-28 45 views
6

Helllo集中定义,我得到这个错误:CS0012:类型 'System.Data.Linq.DataContext' 在未被引用

CS0246: The type or namespace name 'DataClasses1DataContext' could not be found (are you missing a using directive or an assembly reference?)

对于这个.aspx文件:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

public partial class WebApplication1_admin_Places : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     DataClasses1DataContext db = new DataClasses1DataContext(); 
     var query = (from m in db.Places orderby m.Name select m); 
     PlacesList.DataSource = query; 
     PlacesList.DataBind(); 
    } 
} 

事情是,在/文件夹我可以访问数据库,但在/管理文件夹我得到这个错误。

我在做什么错?

EDIT

CS0012:类型 'System.Data.Linq.DataContext' 在未引用的组件定义的。您必须添加对程序集“System.Data.Linq,Version = 3.5.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089”的引用。

这是什么意思?

+0

请参阅我的解决最新错误的评论。 – RPM1984 2010-11-28 23:43:32

回答

5

一对夫妇的地方开始:

  • 其中是包含DataClasses1DataContext的dll?是否有一个原因,你可以从一个文件夹而不是其他
  • 是否有一个配置文件在admin文件夹中,覆盖在根配置文件中设置的值?

编辑

看起来这是一个配置问题。该配置可能表示msl(model)文件位于当前目录中,它位于根目录中。因此,它适用于当你在根目录时,而不是当你在管理员。

参见:MetadataException when using Entity Framework Entity Connection对于类似的问题。

1

你是什么意思“on /文件夹我可以访问数据库,但在/ admin文件夹我得到这个错误”?

上下文使用配置文件中的连接字符串(例如web.config)的文件夹没有区别。相对/绝对路径不适用于此,这是代码,而不是资源。

你有你的数据上下文在一个单独的程序集到您的Web应用程序?

您需要导入命名空间,与其他一切:

E.g

using YourApplication.Data; 
+0

我解决了这个问题,我忘记了包含名称空间WebApplication1 {..... ------但是现在出现了一个新东西:CS0012:类型'System.Data.Linq.DataContext'在未引用的程序集。您必须添加对程序集“System.Data.Linq,Version = 3.5.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089”的引用。 – natiz 2010-11-28 23:10:09

+0

好的,我的管理文件夹上没有Web.Config,应该有吗? – natiz 2010-11-28 23:29:42

+0

@NZIM - 该错误意味着您需要在Web应用程序中引用`System.Data.Linq`。添加 - >参考 - > System.Data.Linq。这是因为您在UI中执行L2SQL操作。如果将L2SQL代码封装在存储库后面,则不需要添加此引用。但是,现在添加对“System.Data.Linq”的引用。 – RPM1984 2010-11-28 23:41:45

1

刚刚有这个相同的错误信息弹出在我身上。解决方法是通过VS 2010引用对话框将项目中的引用添加到System.Data.Linq。

5

当加载程序集的尝试由.ASPX标记引起时,即使程序集已被项目引用,也会发生此错误!通过here时提到的项目范围解决方案是将程序集添加到web.config assemblies Element for compilation中的程序集列表中,例如。

<compilation> 
<assemblies> 
    <add assembly="System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
    ... 

上的每个页面的基础的替代方法是@ Assembly页属性,但是这必须被添加到每个页面使ASP.NET运行以尝试装载该遗漏的组件类型。

0

将参考添加到您的模型。 在C#

using ProjectName.Models; 

Application_Start()常规 Database.SetInitializer<MyMVCTestContext>(null);(这里MyMvcTestContext将是您的数据上下文名)然后添加下面一行

检查下面的列表,以确保您不会错过任何引用。您可能需要全部或不需要。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Http; 
using System.Web.Mvc; 
using System.Web.Optimization; 
using System.Web.Routing; 
using System.Web.ModelBinding; 
using System.Data; 
using System.Data.Entity; 
using MyMVCTest.Models; 
0

如果这个项目是LinqToSql项目,如果数据上下文为“DataClasses1DataContext” dbml的文件名应该是“DataClasses1.dbml”

如果.dbml文件ID“MyLinqToSql.dbml” DataContext的名称应是MyLinqToSqlDataContext。

请检查.dbml文件名,并按照上面的说明匹配databcontext名称。

此外,如果您开始输入,您将在智能感知中自动获取该名称。

0

所以对我来说,伦敦定盘添加LINQTOSQL要将文件夹,其中i用户它+ 添加这里面在webConfig文件:

<system.web> 
<compilation debug="false" targetFramework="4.0"> 
    <assemblies> 
    <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
    </assemblies> 
</compilation> 

0

Navigate to the web project's References node Find the reference to System.Data.Linq Open the VS Properties Window In the properties window, change Copy Local: False to True Before this, the System.Data.Linq.dll was not being copied into the bin directory. (Copying it manually into the bin directory also resolved the error)

来源:https://stackoverflow.com/a/34356930/125938

相关问题