CS0012:类型'System.Data.Linq.DataContext'在未引用的程序集中定义

时间:2010-11-28 22:26:42

标签: .net asp.net database linq-to-sql

Helllo,我收到了这个错误:

  

CS0246:找不到类型或命名空间名称“DataClasses1DataContext”(您是否缺少using指令或程序集引用?)

对于这个.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();
    }
}

问题是,在/文件夹中我可以访问数据库,但在/ admin文件夹中我收到此错误。

我做错了什么?

修改

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

这是什么意思?

8 个答案:

答案 0 :(得分:5)

有几个地方可以开始:

  • 包含DataClasses1DataContext的dll在哪里?是否有理由可以从一个文件夹而不是另一个文件夹中找到它
  • 管理文件夹中是否有配置文件覆盖根配置文件中设置的值?

修改

看起来这是一个配置问题。配置可能表示msl(模型)文件位于当前目录中,它位于根目录中。因此,当你在root上时它会起作用,但是当你在管理员时却不行。

请参阅:MetadataException when using Entity Framework Entity Connection了解类似问题。

答案 1 :(得分: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运行时尝试加载缺少的程序集类型。

答案 2 :(得分:1)

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

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

您是否将数据上下文与Web应用程序分开进行组装?

您需要导入名称空间,就像其他所有内容一样:

E.g

using YourApplication.Data;

答案 3 :(得分:1)

刚刚弹出了同样的错误消息。通过VS 2010引用对话框将项目中的引用添加到System.Data.Linq中得到解决。

答案 4 :(得分: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;

答案 5 :(得分:0)

如果这个项目是LinqToSql Project并且数据上下文是&#34; DataClasses1DataContext&#34; dbml文件名应为&#34; DataClasses1.dbml&#34;

如果.dbml文件id&#34; MyLinqToSql.dbml&#34; datacontext名称应为MyLinqToSqlDataContext。

请检查.dbml文件名并匹配databcontext名称,如上所述。

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

答案 6 :(得分:0)

所以我的修复是将LINQTOSQL添加到我用户+的文件夹中 在webConfig文件中添加此内容:

18 06 2016 09:42:33.320

答案 7 :(得分:0)

  

导航到Web项目的“参考”节点查找对其的引用   System.Data.Linq在属性中打开VS属性窗口   窗口,更改复制本地:假为真在此之前,   System.Data.Linq.dll未被复制到bin目录中。   (手动将其复制到bin目录中也解决了错误)

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