2013-05-23 36 views
9

Tôi vừa tạo một ứng dụng hoàn toàn mới, thêm EntityFramework 5 qua NuGet, tạo ra một DbContext rất cơ bản và lưu một số dữ liệu vào nó.Cơ sở dữ liệu của tôi ở đâu và làm cách nào để xem?

Dữ liệu của tôi chính xác ở đâu và làm cách nào để xem? Các chưa sửa đổi App.config nó thêm là

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> 
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
    </configSections> 
    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 
    </startup> 
    <entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> 
     <parameters> 
     <parameter value="v11.0" /> 
     </parameters> 
    </defaultConnectionFactory> 
    </entityFramework> 
</configuration> 

Và bằng cách kiểm tra các đối tượng db Tôi có thể thấy rằng chuỗi kết nối của tôi là

Data Source=(localdb)\\v11.0;Initial Catalog=ImageSignature.ImageContext;Integrated Security=True;MultipleActiveResultSets=True;Application Name=EntityFrameworkMUE 

Nhưng tất cả điều đó trông giống như jibberish với tôi. Tôi đến từ một nền tảng MySQL.

Cơ sở dữ liệu của tôi chính xác ở đâu và làm cách nào để xem? Tôi không thấy bất cứ điều gì có liên quan trong "Server Explorer" trong VS2012.

Trả lời

8

This bài viết phải trả lời câu hỏi của bạn.

Phần cấu hình cho phép bạn chỉ định kết nối mặc định nhà máy mà Mã đầu tiên nên sử dụng để định vị cơ sở dữ liệu để sử dụng cho ngữ cảnh . Nhà máy kết nối mặc định chỉ được sử dụng khi không có chuỗi kết nối đã được thêm vào tệp cấu hình cho ngữ cảnh .

Khi bạn cài đặt các gói EF NuGet một nhà máy kết nối mặc định đã được đăng ký trỏ đến một trong hai SQL Express hoặc LocalDb tuỳ mà một trong những bạn đã cài đặt.

Đánh giá theo cấu hình của bạn có vẻ như bạn đang sử dụng kết nối với LocalDb, which is a minimalist version of SQL used for development.

Bạn có thể thử sử dụng Trình khám phá máy chủ tích hợp trong Visual Studio để truy cập cơ sở dữ liệu đó, nhưng, như bạn đã viết, nó có thể không hiển thị "ngoài hộp". Như vậy, bạn có thể cần phải tạo một kết nối mới trong Server Explorer để xem nội dung.

EDIT:

tôi đã cháy lên một VMware Windows 8 với VS2012 để thực sự trả lời câu hỏi "ở đâu trên ổ đĩa là cơ sở dữ liệu".

Các LocalDb tạo mdfldf file trong C:\Users\<USER NAME>\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\v11.0

Screenshot from my VM

Như để kết nối với nó thông qua trình duyệt máy chủ, tôi đã có thể xem các cơ sở dữ liệu bằng cách nhập (LocalDb)\v11.0 như địa chỉ máy chủ và sau đó chọn cơ sở dữ liệu với tên giống như tên ngữ cảnh dữ liệu từ ứng dụng của bạn (với không gian tên).

Tất cả thông tin này tôi tìm thấy here.

Xin lưu ý rằng trong mã bạn đã đăng here có vẻ như bạn đang xây dựng lại cơ sở dữ liệu ở đầu ứng dụng bằng cách sử dụng Database.SetInitializer(new DropCreateDatabaseAlways<ImageContext>());. Tất nhiên điều này là tốt khi chạy ứng dụng lần đầu tiên (vì vậy cơ sở dữ liệu thực sự được tạo ra), nhưng các trình chạy lại tiếp theo sẽ xóa dữ liệu và bắt đầu với một phương tiện chặn mới.Sau khi tôi đã kết nối với cơ sở dữ liệu bằng cách sử dụng Server Explorer, tôi thực sự không thể thực thi mã này, vì "cơ sở dữ liệu đã được sử dụng". Bạn có thể cần xem xét lại việc giữ kết nối được mở trong trình duyệt máy chủ hoặc thay đổi dòng mã đó.

+0

Tại sao không phải "hiển thị ra khỏi hộp"? Nó đâu rồi? Nó * được * lưu trữ trong một tập tin trên máy tính của tôi, phải không? Nó có bị ném vào thư mục tạm thời không? Tôi sẽ thử thêm 'AttachDBFilename' vào chuỗi kết nối của tôi như Darin gợi ý, nhưng tôi thực sự muốn biết nó đang làm gì. – mpen

+0

Vì tôi đang sử dụng Windows 7 và máy chủ SQL toàn diện để phát triển và LocalDd dường như được cài đặt với VS2012 trên W8, tôi gặp sự cố khi kiểm tra. Bạn có muốn chia sẻ cách bạn tạo một DbContext rất cơ bản không? – Shaamaan

+0

Tôi đã tải lên liên quan đến [this gist] (https://gist.github.com/mnbayazit/89409c1fb880f3704396). Nó chỉ là một lớp với 2 trường. – mpen

3

Bạn đang sử dụng LocalDb. Nội dung có thể được lưu trữ trong một tập tin. Bạn có thể xác định vị trí bằng cách sử dụng một chuỗi kết nối:

<connectionStrings> 
    <add name="ImageContext" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=database;Integrated Security=SSPI;AttachDBFilename=c:\work\database.mdf" providerName="System.Data.SqlClient" /> 
</connectionStrings> 

Các name của chuỗi kết nối phải phù hợp với tên của tập tin DbContext của bạn.

Bạn có thể sử dụng Trình khám phá máy chủ trong Visual Studio để mở tệp db này và khám phá nội dung của nó.

+1

LocalDB là một dịch vụ dựa trên cơ sở dữ liệu, và không có gì để làm với SQL Server Compact – ErikEJ

+0

Cảm ơn bạn. Đã thử thêm điều này; nó tạo ra các tập tin DB mà tôi đã có thể kết nối bằng cách chọn "Microsoft SQL Server Database File" trong Server Explorer. Tôi có thể thấy bảng bây giờ, nhưng tôi không thể xem nội dung của nó. – mpen

+0

Rất có thể vì cơ sở dữ liệu trống? – Shaamaan

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