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 回答
几个地方开始:
包含DataClasses1DataContext的dll在哪里?有没有理由可以从一个文件夹而不是另一个文件夹中找到它
管理文件夹中是否有配置文件覆盖根配置文件中设置的值?
Edit
看起来这是一个配置问题 . 配置可能表示msl(模型)文件位于当前目录中,它位于根目录中 . 因此,当您在root上时它会起作用,但是当您在管理员中时它不起作用 .
请参阅:MetadataException when using Entity Framework Entity Connection以了解类似问题 .
当尝试加载程序集是由.ASPX标记引起时,即使程序已经引用该程序集,也会发生此错误!传递here时提到的项目范围的解决方案是将程序集添加到web.config assemblies Element for compilation中的程序集列表中,例如 .
基于每页的替代方法是@ Assembly页面属性,但必须将其添加到每个页面,导致ASP.NET运行时尝试加载缺少的程序集类型 .
你是什么意思“在/文件夹我可以访问数据库,但在/ admin文件夹我得到这个错误”?
你所在的文件夹 - 上下文使用配置文件中的连接字符串(例如web.config)没有区别 . 相对/绝对路径不适用于此,这是代码,而不是资源 .
您是否将数据上下文与Web应用程序分开组装?
您需要导入名称空间,就像其他所有内容一样:
例如
刚刚弹出了同样的错误信息 . 通过VS 2010引用对话框将项目中的引用添加到System.Data.Linq中得到解决 .
添加对模型的引用 . 在C#中
然后在
Application_Start()
例程Database.SetInitializer<MyMVCTestContext>(null);
中添加以下行(此处MyMvcTestContext将是您的数据上下文名称)检查以下列表以确保您没有遗漏任何参考 . 您可能需要所有这些或不需要 .
如果此项目是LinqToSql Project并且数据上下文是“DataClasses1DataContext”,则dbml文件名应为“DataClasses1.dbml”
如果.dbml文件id为“MyLinqToSql.dbml”,则datacontext名称应为MyLinqToSqlDataContext .
请检查.dbml文件名并匹配databcontext名称,如上所述 .
此外,如果您开始输入,您将在IntelliSense中自动获取名称 .
所以我的修复是将LINQTOSQL添加到我在webConfig文件中添加This Inside的文件夹:
来自:https://stackoverflow.com/a/34356930/125938