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

nat*_*tiz 6 .net database asp.net 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();
    }
}
Run Code Online (Sandbox Code Playgroud)

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

我究竟做错了什么?

编辑

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

那是什么意思?

Shi*_*iji 5

几个地方开始:

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

编辑

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

请参阅:使用Entity Framework Entity Connection解决类似问题时的MetadataException.


use*_*430 5

当尝试加载程序集是由.ASPX标记引起时,即使程序已经引用该程序集,也会发生此错误!这里提到的项目范围的解决方案是将程序集添加到web.config 程序集中的程序集列表中进行编译,例如.

<compilation>
 <assemblies>
  <add assembly="System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
  ...
Run Code Online (Sandbox Code Playgroud)

每页的替代方法是@ Assembly页面属性,但必须将其添加到每个页面,导致ASP.NET运行时尝试加载缺少的程序集类型.