2013-03-10 19 views
5

Đây là khoảng connectionStrings/ASP.NET MVC với Visual Studio 2012 ultimate & SQL Server Express 2012.ASP.NET ConnectionString AttachDbFilename = | DataDirectory |

Theo dõi với hướng dẫn này ở đây: http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/intro-to-aspnet-mvc-4 Tôi đã xem qua một vấn đề với hai dây kết nối tại web.config của tôi:

<connectionStrings> 
    <add name="DefaultConnection" 
     connectionString="Data Source=(LocalDb)\v11.0; 
          Initial Catalog=aspnet-MvcMovie-users; 
          Integrated Security=SSPI; 
          AttachDBFilename=|DataDirectory|\aspnet-MvcMovie-users.mdf" 
     providerName="System.Data.SqlClient" /> 

    <add name="MovieDBContext" 
     connectionString="Data Source=(LocalDB)\v11.0; 
          AttachDbFilename=|DataDirectory|\Movies.mdf; 
          Integrated Security=True" 
     providerName="System.Data.SqlClient" /> 
</connectionStrings> 

website hoạt động tốt nhưng tôi không thể fingure hiểu tại sao db đầu tiên được tạo ra trong thư mục App_Data trong khi cái thứ hai được tạo ra trong "C: \ Program Files \ Microsoft SQL server \ MSSQL11.SQLEXPRESS \ MSSQL \ DATA "?! Tôi cho rằng cả hai sẽ được tạo ra trong App_data vì cả hai đều sử dụng thuộc tính này: AttachDBFilename = | DataDirectory |!

lưu ý: hướng dẫn đề cập rằng nó phải nằm trong App_Data & họ đã thêm ảnh chụp màn hình hiển thị ở đó!

Tôi đã tìm kiếm câu trả lời và nhận được sự phức tạp của SQL (Tôi nghĩ User Instances có thể là giải pháp) nhưng không thể đạt được câu trả lời cho điều này: |

(điều này có thể có ích để đọc về Instances tài http://msdn.microsoft.com/en-us/library/bb264564(v=sql.90).aspx)

Bất kỳ ý tưởng được đánh giá rất cao. Cảm ơn trước.

Kính trọng

+0

Điều gì sẽ xảy ra khi bạn thêm 'InitialCatelog' vào cả hai chuỗi? –

+0

Tôi đã không cố gắng vì mục tiêu của tôi không phải là để cuối cùng làm cho cả hai cơ sở dữ liệu xuất hiện dưới App_data; Tôi thay vì cần phải hiểu tại sao VS/SQL tạo ra chúng theo cách này. cảm ơn sự đóng góp của bạn. – Alaa

Trả lời

15

sau khi nghiên cứu/kiểm tra nó hóa ra là như sau:

VS sẽ xem xét các tên lớp của DataContext và sẽ xem xét để xem nếu bạn đã cung cấp một chuỗi kết nối với tên giống như lớp Tên; ví dụ:

public class MovieDataContext : DbContext 

<connectionStrings><add name="MovieDataContext" ... 

nếu nó quản lý để tìm một chuỗi kết nối phù hợp nó sẽ tạo ra DB dựa trên các tiêu chí mà bạn chỉ định trong chuỗi dữ liệu tương ứng (để thêm DB đến App_Data đặt đường dẫn của DB thành | DataDirectory | như được hiển thị trong cả hai chuỗi kết nối được đề cập trong câu hỏi); nếu tên không khớp hoặc bạn không cung cấp bất kỳ chuỗi kết nối nào, VS sẽ quay trở lại cài đặt mặc định và sẽ tạo DB ở vị trí/cài đặt mặc định (thường là C: \ Program Files \ Microsoft SQL Server \ MSSQL11.SQLEXPRESS \ MSSQL \ DATA).

lưu ý cả cài đặt "Bảo mật tích hợp" cũng như "Danh mục ban đầu" đóng bất kỳ vai trò nào với điều này (tôi có thể tạo DB trong App_Data với cả Bảo mật tích hợp = True & Bảo mật tích hợp = SSPI và có/không có Ban đầu Mục lục).

Hy vọng điều này sẽ hữu ích. Cảm ơn tất cả mọi người đã tham gia.

0

Tôi gặp vấn đề tương tự. Tôi tin rằng sự khác biệt là trong cài đặt Bảo mật tích hợp. Tôi đã cài đặt SQLExpress và tìm thấy cơ sở dữ liệu Phim của tôi trong đó bằng cách sử dụng MS SQL Server Management Studio.

Kiểm tra phản hồi này để có giải thích tốt hơn. Difference between Integrated Security = True and Integrated Security = SSPI

0

AMT đã cho là chính xác. Thật khó hiểu khi sử dụng các chuỗi kết nối với các tệp .mdf và .sdf.

Tôi có một con trỏ khác cho bạn, bạn có thể thay đổi thiết đặt mặc định nơi ứng dụng tìm kiếm một chuỗi kết nối với tên khớp với tên lớp của lớp ngữ cảnh bằng cách ghi đè hàm tạo của DBContext và cung cấp tên paramOrOrectectionString như sau

public BlogsContext() 
      : base("name=EFBlogs") 
     { 
     } 

Application sau đó tìm kiếm một EFBlogs chuỗi kết nối được đặt tên, nếu nó không thể tìm thấy chuỗi kết nối sau đó nó tạo ra cơ sở dữ liệu với EFBlogs tên, thay vì BlogsContext

0

Xin chào, tôi nhận thấy sự khác biệt khi bạn thêm cơ sở dữ liệu và yêu cầu bạn muốn nó được đặt trong thư mục app_data nếu bạn nhấp vào có thì thư mục app_data và tên đường dẫn đầy đủ của mdf cũng nằm trong app_data thư mục whne bạn sử dụng file explorer.

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