2009-09-11 25 views
58

Trong AppConfig, bạn có thể sử dụng |DataDirectory| nhưng tôi không thể tìm thấy bất kỳ tài liệu nào?ADO.NET | DataDirectory | tài liệu này ở đâu?

+0

[Bài đăng này] (http://social.msdn.microsoft.com/Forums/en-US/sqlce/thread/dc31ea59-5718-49b6-9f1f-7039da425296) dường như giải thích đầy đủ. –

Trả lời

71

|DataDirectory| là chuỗi thay thế để bạn có thể định cấu hình vị trí tệp cơ sở dữ liệu của mình một cách riêng biệt.

Vì vậy, thay vì:

SqlConnection c = new SqlConnection (
    @"Data Source=.\SQLDB; AttachDbFilename=C:\MyDB\Database.mdf;Initial Catalog=Master"); 

bạn làm như sau:

// Set |DataDirectory| value 
AppDomain.CurrentDomain.SetData("DataDirectory", "C:\myDB"); 

// SQL Connection String with |DataDirectory| substitution string 
SqlConnection c = new SqlConnection (
    @"Data Source=.\SQLDB; AttachDbFilename=|DataDirectory|\Database.mdf;Initial Catalog=Master"); 
+2

Đây là một số tài liệu (tìm kiếm DataDirectory): http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring.aspx – ironic

+2

Và hơn thế nữa: http://msdn.microsoft.com /en-us/library/cc716756.aspx – ironic

+0

điều này dường như cũng hoạt động với sqlite: http://sqlite.phxsoftware.com/forums/t/1824.aspx – juFo

14

Trong các diễn đàn xã hội MSDN this câu trả lời có thể được tìm thấy

| DataDirectory | (kèm theo trong biểu tượng ống) là một chuỗi thay thế cho biết đường dẫn đến cơ sở dữ liệu. Nó giúp loại bỏ sự cần thiết phải mã hóa cứng đường dẫn đầy đủ dẫn đến một số vấn đề khi đường dẫn đầy đủ đến cơ sở dữ liệu có thể được tuần tự hóa ở những nơi khác nhau. DataDirectory cũng giúp dễ dàng chia sẻ một dự án và cũng để triển khai một ứng dụng.

Ví dụ, thay vì có các chuỗi kết nối sau đây:

"Data Source= c:\program files\MyApp\Mydb.sdf" 

Sử dụng DataDirectory, bạn có thể có chuỗi kết nối sau:

“Data Source = |DataDirectory|\Mydb.sdf” 

Để thiết lập thuộc tính DataDirectory, hãy gọi AppDomain. Phương thức SetData. Nếu bạn không đặt thuộc tính DataDirectory, các quy tắc mặc định sau sẽ được áp dụng để truy cập thư mục cơ sở dữ liệu:

  • Đối với ứng dụng được đặt trong thư mục trên máy tính của người dùng, thư mục cơ sở dữ liệu sử dụng thư mục ứng dụng.
  • Đối với các ứng dụng đang chạy dưới ClickOnce, thư mục cơ sở dữ liệu sử dụng thư mục dữ liệu cụ thể được tạo.
+0

Bạn sẽ gọi cho AppDomain.SetData ở đâu trong dự án MVC? – alex

8

Không đúng! The | DataDirectory | đề cập đến thư mục mssql \ data instance của bạn được cấu hình cho.

Vì vậy, ví dụ tôi đang sử dụng gián đoạn Visual Studio 2012 với SQL Express. | DataDirectory | đặt tất cả các tập tin MDF theo C: \ Program Files \ Microsoft SQL Server \ MSSQL10_50.SQLEXPRESS \ MSSQL \ DATA nơi sql express của tôi đã được cài đặt không phải là thư mục giải pháp app_data của tôi.

Ngoài ra tệp là tên MVCMovie.Models.MovieDBContext không phải Movies.mdf như được chỉ định trong web.config của tôi.

Tôi nghĩ rằng nó cần phải được cấu hình ở đâu đó trong studio trực quan để nó được đặt một cách thích hợp theo app_data.

3

Điều này có thể có liên quan nếu bạn đang sử dụng di chuyển mã đầu tiên.

Với VisualStudio 2013 (ít nhất) khi chạy lệnh Update-Database, thư mục dữ liệu tương đối từ "Dự án khởi động" hiện được định cấu hình trong studio trực quan.

Thậm chí nếu bạn chạy Update-Database trên một dự án khác (như được chọn trên Package Manager Console), nó sẽ tạo cơ sở dữ liệu của bạn trên App_Data của Dự án khởi động được chọn hiện tại.

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