2012-03-03 43 views
7

Tôi gặp lỗi này khi tôi cố gắng khởi chạy trang web của mình bằng WebMatrix. Tôi có tệp .cs thực hiện cuộc gọi var db = Database.Open("dbase");.Tên 'Cơ sở dữ liệu' không tồn tại trong ngữ cảnh hiện tại?

Tôi có một cơ sở dữ liệu trong dự án của tôi được gọi là "dbase". Tôi không có tệp web.config và không nhập khẩu để sử dụng các gói WebMatrix kể từ khi tôi khởi chạy trang web bằng cách sử dụng WebMatrix, vì vậy tôi không tin rằng tôi cần chúng. Tôi có cần bọc mã trong các thẻ Razor, như @{var db = Database.Open("dbase"); } không? Điều này cũng gây ra lỗi cho tôi.

Điều gì có thể gây ra điều này? Có ai có bất kỳ giải pháp cho điều này?

Trả lời

5

Bạn cần một tham chiếu đến assembly WebMatrix.Data.dll (mà bạn có thể có) và bạn cũng cần một chỉ thị using cho namespace WebMatrix.Data:

using WebMatrix.Data; 

Điều đó sẽ nhập khẩu các lớp Database để bạn có thể sử dụng nó không có đủ điều kiện tên. Không rõ lý do tại sao bạn nghĩ rằng bạn sẽ không cần bất kỳ "nhập khẩu" (mà tôi cho rằng bạn có nghĩa là sử dụng chỉ thị như trên) nhưng nếu điều này là trong một tập tin C#, sau đó bạn chắc chắn làm cần chúng (hoặc bạn cần phải có tên loại hoàn toàn đủ điều kiện, đó là xấu xí).

+0

Cảm ơn bạn rất nhiều vì đã trả lời! Tôi đã không nhận ra sự khác biệt giữa các tệp .cs và phần còn lại. Bây giờ tôi đã thêm chỉ thị sử dụng (lời xin lỗi không chính xác, tôi là một lập trình viên Java đang cố gắng tìm hiểu) - Tôi đang gặp lỗi 'Không thể tìm thấy loại tên hoặc không gian tên' WebMatrix '(bạn đang thiếu chỉ thị sử dụng) hoặc tham chiếu lắp ráp?) '. Tôi giả sử tôi cần phải tham khảo các WebMatrix.Data.Dll? Tôi có thể làm cái này như thế nào? –

+0

@ SimonKiely: Tôi đã không sử dụng WebMatrix bản thân mình, nhưng tôi đã có * nghĩ * nó đã có mặt ở đó. Nếu có phần "Tham chiếu dự án" trong dự án của bạn, hãy tìm "Thêm tham chiếu". –

+0

Cảm ơn bạn đã phản hồi. Tôi không thể tìm thấy một tài liệu tham khảo như thế này. Tôi không tin rằng tôi cần điều này; Nó phải ở đó, và mã hoạt động trong một tệp .cshtml. Tôi rất bối rối. –

7

Tôi đã gặp sự cố này khi tôi thực hiện các công cụ w3schools trên ASP.NET.

Về cơ bản, các câu trả lời ở trên là chính xác: bạn cần lắp ráp (DLL) WebMatrix.Data, nhưng người nhận xét không cho bạn biết cách khắc phục sự cố. Dưới đây là cách thực hiện:

Đầu tiên, sao chép tệp WebMatrix.Data.dll vào thư mục/bin của trang web của bạn.

Nếu bạn không chắc chắn sẽ lấy nó ở đâu, bạn có thể yêu cầu WebMatrix tạo một dự án mới bằng cách sử dụng mẫu có sẵn cho cơ sở dữ liệu - ví dụ: Bakery - và lấy nó ra khỏi thư mục bin của dự án đó. Hoặc bạn có thể tìm kiếm ổ đĩa cứng của bạn cho tập tin. Tôi có một bản sao ở số C:\Program Files\Microsoft ASP.NET\ASP.NET Web Pages\v2.0\Assemblies.

Sau đó,, trong trang ASP.NET của bạn, hãy nhập cụm.

Đây là một ý tưởng tồi đối với trang web bạn sẽ phải duy trì trong một thời gian dài, nhưng với mục đích của bản trình diễn này, bạn chỉ cần thêm @using WebMatrix.Data; vào đầu trang sản phẩm của mình. Nó sẽ kết thúc tìm kiếm một cái gì đó như thế này:

@using WebMatrix.Data; 
@{ 
var db = Database.Open("SmallBakery"); 
var selectQueryString = "SELECT * FROM Product ORDER BY Name"; 
} 

Bây giờ nó sẽ nhận ra biểu tượng "Cơ sở dữ liệu", và tất cả sẽ được tốt.

+0

Trong trường hợp của tôi, tôi đã có tệp WebMatrix.Data.dll trong thư mục bin của trang web của tôi. Điều này có thể là do cập nhật được thực hiện cho WebMatrix. Dù bằng cách nào, nó là tốt đẹp để biết nơi nó được cho là nằm. – VoidKing

6

Bạn chỉ cần tải "Microsoft.AspNet.WebPages.WebData" này từ Thư viện NuGet.

0

Trong trường hợp của tôi, tôi đã cài đặt gói nugget nhưng không tìm thấy WebMatrix.Data. Vấn đề là tôi đã tạo một dự án mới, thay vào đó tôi chỉ tạo một trang web (tệp/new/WEBSITE), thì Cơ sở dữ liệu được tìm thấy theo mặc định (tôi đoán đó là do loại dự án tôi đã tạo lần đầu tiên)

Bây giờ nó hoạt động tốt, hy vọng điều này sẽ giúp ai đó.

Các vấn đề liên quan