2013-08-12 37 views
6

Tôi có ứng dụng web Visual Studio 2012 (fw. 4.5) nơi tôi cố gắng LINQ đến cơ sở dữ liệu sql của tôi . Tôi đã thêm một datacontext vào dự án của mình và đặt nó vào thư mục gốc. Trong tệp dữ liệu văn bản, tôi đã thêm một bảng có tên GlobalMenu từ cơ sở dữ liệu ExpressDatabase của SQL 2012 của tôi.Mô-đun 'System.Data.Linq' Phiên bản = 4.0.0.0, Văn hóa = trung lập, Publickeytoken = b77a5c561934e089 'nên được tham chiếu

Tôi đang cố gắng để truy cập dữ liệu với LINQ bằng cách sử dụng lệnh sau: báo cáo

DataContextDataContext db = new DataContextDataContext(); 
var menupages = from p in db.GlobalMenus 
       select p; 

Intellisense:

Module 'System.Data.Linq' Version=4.0.0.0, Culture=neutral, Publickeytoken=b77a5c561934e089' should be referenced 

Khi tôi biên dịch và cố gắng chạy ứng dụng của tôi, tôi nhận được:

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 được refenced trong dự án của tôi và tôi đã thêm theo cách thủ công

<dependentAssembly> 
    <assemblyIdentity name="System.Data.Linq" publicKeyToken="b77a5c561934e089"/> 
    <bindingRedirect oldVersion="1.0.0.0-4.5.0.0" newVersion="4.0.0.0"/> 
    </dependentAssembly> 

trong phần thời gian chạy trong web.config. Tuy nhiên, lỗi vẫn còn đó.

Một vấn đề khác là khi tôi đặt tệp DataContext của mình vào thư mục App_Code, tôi gặp lỗi khác.

báo cáo Intellisense: Không thể giải quyết biểu tượng 'Chọn'

Sau khi biên dịch và chạy các ứng dụng web tôi nhận được một lỗi thời gian chạy bên trong các tập tin DataContext trong file thiết kế.

using System.Data.Linq; 
using System.Data.Linq.Mapping; 

Không thể giải quyết ký hiệu 'LINQ'.

Dự án web này dựa trên tiêu chuẩn "Ứng dụng biểu mẫu web ASP.NET" và những gì tôi đang cố gắng thoát khỏi lập trình cơ bản, vì vậy tôi không thể thấy những gì tôi đang làm sai ở đây.

+0

nếu bạn đang sử dụng cơ sở dữ liệu mysql sau đó chọn kỹ thuật khác để truy cập dữ liệu vì LINQ to SQL chỉ supprot sql server.try nó bởi ado hoặc ms applicaion khối –

+0

Nếu đây là một dự án cơ bản thì tại sao bạn đang cố gắng hạ cấp một assembly? Tại sao không chỉ sử dụng các thiết lập mặc định trên tất cả các hội đồng và tài liệu tham khảo? Ngoài ra, nếu bạn đánh dấu tham chiếu 'System.Data.Linq', nó có thực sự là 4.0.0 không.0 trong cửa sổ thuộc tính? – Niklas

+0

Vikas Rana: Đây là một ứng dụng phần mềm của Microsoft với Visual Studio và SQL 2012 express. Bởi vì thiếu kinh nghiệm tôi muốn làm một yêu cầu LINQ cho cơ sở dữ liệu của tôi. – jona

Trả lời

4

Lỗi này thường xảy ra do phiên bản DLL không khớp. Thử xóa thư mục bin của bạn và xây dựng lại ứng dụng.

+0

tôi đã thử để xóa thư mục bin, nhưng vấn đề vẫn còn đó. Tôi chạy cửa sổ cập nhật và thực hiện cập nhật đầy đủ trên tất cả các gói. – jona

+0

Tôi đã có vấn đề này khi tôi thêm tập tin SQLBasic lúc bắt đầu dự án sau đó thay đổi để SQL Server. Nó đã thêm một thứ Data.sqlCE. Loại bỏ tham chiếu đó và đặt data.linq để sao chép cục bộ. Nguyên nhân là nó thực sự bị mất trong thời gian chạy nên các khung nhìn. – ppumkin

+0

Tôi đã xóa các thư mục bin và obj và sau đó biên dịch lại (xây dựng) và làm việc tốt !!! Tất nhiên, tôi đã làm một bản sao của dự án trước khi thực hiện việc xóa này. Cảm ơn bạn. Luis –

2

Nó cũng có vẻ như "LINQ to SQL classes" có thể được thêm vào thư mục "APP_Code". Tôi không thể truy vấn datacontext khi nó được lưu trữ trong thư mục APP_Code.

3

Tôi tin rằng điều này có nghĩa là bạn đang tham chiếu đến các lớp/phương thức được định nghĩa trong một DLL (assembly) khác. Dự án của bạn cần phải có một tham chiếu đến thư viện này (DLL/assembly) để nó có thể biên dịch dự án của bạn. (không có gì liên quan đến tệp cấu hình web/ứng dụng)

Từ bên trong dự án của bạn, nhấp chuột phải vào tiêu đề phần 'Tham khảo' và chọn 'Thêm tham chiếu'. Duyệt đến vị trí của hội đồng (nó phải dưới 'Assemblies-> Framework-> System.Data.Linq)

Cheers