【发布时间】:2013-08-12 06:51:26
【问题描述】:
我有一个 Visual Studio 2012 Web 应用程序(fw. 4.5),我尝试 linq 到我的 sql 数据库。 我已经在我的项目中添加了一个数据上下文并将其放在根文件夹中。在 datacontext 文件中,我从我的 SQL 2012 expressdatabase 添加了一个名为 GlobalMenu 的表。
我正在尝试使用以下命令通过 linq 访问数据:
DataContextDataContext db = new DataContextDataContext();
var menupages = from p in db.GlobalMenus
select p;
智能感知报告:
Module 'System.Data.Linq' Version=4.0.0.0, Culture=neutral, Publickeytoken=b77a5c561934e089' should be referenced
当我编译并尝试运行我的应用程序时,我得到:
CS0012: The type 'System.Data.Linq.DataContext' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
System.Data.Linq 4.0.0.0 在我的项目中被引用,我已经手动添加了
<dependentAssembly>
<assemblyIdentity name="System.Data.Linq" publicKeyToken="b77a5c561934e089"/>
<bindingRedirect oldVersion="1.0.0.0-4.5.0.0" newVersion="4.0.0.0"/>
</dependentAssembly>
在 web.config 的运行时部分。 但是错误仍然存在。
另一个问题是,当我将 DataContext 文件放入 App_Code 文件夹时,我又遇到了另一个错误。
智能感知报告: 无法解析符号“选择”
编译并运行 Web 应用程序后,我在设计器文件的 datacontext 文件中遇到运行时错误。
using System.Data.Linq;
using System.Data.Linq.Mapping;
无法解析符号“Linq”。
这个 Web 项目基于标准的“ASP.NET Web 窗体应用程序”,而我正在尝试做的是退出基本编程,所以在这里我看不出我做错了什么。
【问题讨论】:
-
如果您使用的是 mysql 数据库,请选择其他技术来访问数据,因为 linq to sql 仅支持 sql server。通过 ado 或 ms 应用程序块尝试它
-
如果这是一个基本项目,那么您为什么要尝试降级程序集?为什么不对所有程序集和引用使用默认设置?另外,如果你标记了
System.Data.Linq引用,它真的会在属性窗口中显示 4.0.0.0 吗? -
Vikas Rana:这是一个带有 Visual Studio 和 SQL 2012 express 的全 Microsoft 软件应用程序。由于缺乏经验,我想对我的数据库进行 Linq 请求。
-
Niklas:我不想降级。当我完成项目 System.Data.Linq 时,默认添加了框架 4.0.0.0。不是fw。 4.5. Visual Studio 引用 C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Data.Linq.dll,但 Visual Studio 中 References 下的版本号为 4.0.0.0
标签: c# asp.net web datacontext