【问题标题】:Module 'System.Data.Linq' Version=4.0.0.0, Culture=neutral, Publickeytoken=b77a5c561934e089' should be referenced模块 'System.Data.Linq' 版本=4.0.0.0, Culture=neutral, Publickeytoken=b77a5c561934e089' 应该被引用
【发布时间】: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


【解决方案1】:

此错误通常是由于 DLL 版本不匹配造成的。尝试删除您的 bin 文件夹并重新构建应用程序。

【讨论】:

  • 我试图删除 bin 文件夹,但问题仍然存在。我运行了 Windows 更新并对所有软件包进行了完整更新。
  • 我在项目开始时添加 SQLBasic 文件然后更改为 SQL Server 时遇到了这个问题。它添加了一个Data.sqlCE 东西。删除该引用并将 data.linq 设置为复制本地。因为它在运行时实际上丢失了,所以视图会出现恐慌。
  • 我删除了 bin 和 obj 文件夹,然后重新编译(构建)并且工作正常!!!当然,我在做这个删除之前做了一个项目的副本。谢谢你。路易斯
【解决方案2】:

我相信这意味着您正在引用另一个 DLL(程序集)中定义的类/方法。您的项目需要引用此库(DLL/程序集),以便它可以编译您的项目。 (与 web/app 配置文件无关)

在您的项目中,右键单击“参考”部分标题并选择“添加参考”。浏览到程序集的位置(它应该在 'Assemblies->Framework->System.Data.Linq 下)

干杯

【讨论】:

    【解决方案3】:

    似乎“Linq to SQL classes”也可以添加到“APP_Code”文件夹中。存储在 APP_Code 文件夹中的 datacontext 无法查询。

    【讨论】:

      【解决方案4】:

      就我而言,Restart Visual Studio > delete the reference > add the right reference again > clean solution > rebuild solution 有效。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-03-18
        • 1970-01-01
        • 2013-02-27
        • 2016-01-20
        • 2017-05-12
        • 1970-01-01
        • 2017-07-02
        • 2015-09-09
        相关资源
        最近更新 更多