首页 文章

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

提问于
浏览
6

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文件夹我得到这个错误 .

我究竟做错了什么?

EDIT

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

那是什么意思?

8 回答

  • 5

    几个地方开始:

    • 包含DataClasses1DataContext的dll在哪里?有没有理由可以从一个文件夹而不是另一个文件夹中找到它

    • 管理文件夹中是否有配置文件覆盖根配置文件中设置的值?

    Edit

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

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

  • 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

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

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

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

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

    例如

    using YourApplication.Data;
    
  • 1

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

  • 1

    添加对模型的引用 . 在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 Project并且数据上下文是“DataClasses1DataContext”,则dbml文件名应为“DataClasses1.dbml”

    如果.dbml文件id为“MyLinqToSql.dbml”,则datacontext名称应为MyLinqToSqlDataContext .

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

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

  • 0

    所以我的修复是将LINQTOSQL添加到我在webConfig文件中添加This Inside的文件夹:

    <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

    导航到Web项目的References节点查找对System.Data.Linq的引用打开VS Properties窗口在属性窗口中,将Copy Local:False更改为True在此之前,System.Data.Linq.dll未被复制到bin目录 . (手动将其复制到bin目录中也解决了错误)

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

相关问题