37

Tôi đang làm việc trong Nhà phát triển Web Trực quan 2010 Express và sử dụng CTP mã Cước thực thể. Tôi có thể làm điều này với SQL Server CE mới nhưng tôi không thể tìm thấy một chuỗi kết nối để làm việc với SQL Server Express.Chuỗi kết nối SQL Server Express cho Mã Khuôn khổ Thực thể Đầu tiên

Cái này, sử dụng bản SQL Server CE beta, hoạt động tốt (cơ sở dữ liệu được tạo và tái tạo trên các thay đổi mô hình).

<add name="TrempimModel" 
    connectionString="data source=|DataDirectory|TrempimModel.sdf" 
    providerName="System.Data.SqlServerCe.4.0" /> 

này một, mà tôi sao chép từ chuỗi aspnetdb kết nối,

<add name="TrempimModel" 
    connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI; 
    AttachDBFilename=|DataDirectory|TrempimModel.mdf;User Instance=true" 
    providerName="System.Data.SqlClient" /> 

Cung cấp được thông báo sau khi khởi động:

Không thể hoàn thành thao tác. SqlConnection đã cung cấp không chỉ định một danh mục ban đầu

Vậy làm thế nào để làm cho nó hoạt động với SQL Server Express?

Trả lời

59

Vấn đề với chuỗi kết nối của bạn ở đây là:

<add name="TrempimModel" 
    connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI; 
         AttachDBFilename=|DataDirectory|aspnetdb.sdf; 
         User Instance=true" 
    providerName="System.Data.SqlClient" /> 

Bạn đang về cơ bản xác định những gì "máy chủ" bạn đang kết nối - nhưng bạn không nói gì cơ sở dữ liệu bên trong các tập tin để kết nối đến. Ngoài ra - phần mở rộng tập tin cho các tập tin cơ sở dữ liệu SQL Server Express là .mdf (không phải .sdf - đó là SQL Server Compact Edition) - bạn cũng cần tính đến điều đó! (là lỗi đánh máy, theo nhận xét của OP).

Bạn cần phải xác định thêm một database=.... (hoặc Initial Catalog=.....) trong chuỗi kết nối của bạn:

<add name="TrempimModel" 
    connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI; 
         database=YourDatabaseName; 
         AttachDBFilename=|DataDirectory|aspnetdb.mdf; 
         User Instance=true" 
    providerName="System.Data.SqlClient" /> 

Sau đó, nó sẽ chỉ làm việc tốt.

Để biết thêm thông tin cơ bản và tấn mẫu, hãy xem trang web ConnectionStrings.

+0

a) phần mở rộng sdf là lỗi đánh máy. Tôi đã sử dụng mdf trong chuỗi kết nối - đã chỉnh sửa câu hỏi để phản ánh điều đó. gợi ý để xác định cơ sở dữ liệu đã giải quyết được vấn đề của tôi - cảm ơn. Tôi đang sử dụng tên giống với tên tập tin - đó là chính xác hay nó có thể gây ra một số vấn đề xuống dòng? – GilShalit

+0

@GilShalit: nó phụ thuộc vào những gì cơ sở dữ liệu bên trong MDF của bạn thực sự được gọi là; có khả năng cao, nó giống với tên tệp. Bạn sẽ phải xác minh rằng bằng cách gắn MDF vào một trường hợp SQL Server chính thức và xem những gì cơ sở dữ liệu được lưu trữ bên trong MDF thực sự được gọi. –

+0

như bạn dường như biết rất nhiều về điều này, tôi không giả sử nếu bạn có một thời điểm bạn có thể xem câu hỏi của tôi ... Tôi có thể nhận được chuỗi kết nối để làm việc nhưng sau đó nếu tôi cố gắng chỉnh sửa/sử dụng cơ sở dữ liệu, tôi nhận được rất nhiều lỗi :(- http://stackoverflow.com/questions/5924553/entity-framework-error-connecting-to-sql-server-express-after-mounting-connecting và đăng lại MSDN - http: //social.msdn.microsoft.com/Forums/en-US/adodotnetentityframework/thread/1ec3ff63-d8a1-4844-942d-c2c05ed8078e – Wil

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