2013-02-20 46 views
6

Tôi ban đầu đã có mã EF được thiết lập đầu tiên đang kết nối với cơ sở dữ liệu hiện có. Điều này đã làm việc tốt.Mã EF Đầu tiên - tạo cơ sở dữ liệu - Đăng nhập thất bại cho người dùng

Sau đó tôi đã thực hiện một vài thay đổi đối với POCO và quyết định tạo mã đầu tiên tạo cơ sở dữ liệu mới cho tôi.

Lỗi: Không thể mở cơ sở dữ liệu \ "MyDatabase \" do thông tin đăng nhập yêu cầu. Đăng nhập thất bại. \ R \ nĐăng nhập không thành công cho người dùng 'DOMAIN \ username'.

Tôi đã xóa cơ sở dữ liệu cũ, nhưng tôi đã không làm thay đổi chuỗi kết nối:

<add name="MyDatabaseContext" connectionString="Data Source=localhost;Initial Catalog=MyDatabase;Integrated Security=True;" providerName="System.Data.SqlClient" /> 

Tôi có một sql server 2008 Ví dụ trên máy tính địa phương của tôi và tên người dùng tên miền của tôi là trong vai trò "sysadmin".

Tôi đã thử nhiều Trình khởi tạo cơ sở dữ liệu khác nhau và tôi nhận được lỗi tương tự cho tất cả. Nó không thành công trong cuộc gọi truy vấn đầu tiên, nhưng mã đầu tiên không tạo cơ sở dữ liệu. Tôi có thể điểm chuỗi kết nối đến một bản sao của cơ sở dữ liệu cũ (trước khi thay đổi) và nó sẽ chạy tốt, ngoại trừ nó là lược đồ cũ của tôi mặc dù tôi đã chỉ định trình khởi tạo DropCreateDatabaseAlways. Điều này là không có ý nghĩa, và không làm theo những gì tôi có kinh nghiệm về máy nhà của tôi làm việc với mã đầu tiên.

Sử dụng Visual studio 2012 và EF5.

Tôi cần để có thể có mã đầu tiên tạo cơ sở dữ liệu mới. Chuyện gì vậy?

Trả lời

8

Phát hiện ra tôi đã có một hàm tạo tĩnh trong lớp DbContext của tôi, nó đã ghi đè bộ khởi tạo cơ sở dữ liệu.

static MyDbContext() 
     { 
      Database.SetInitializer<MyDbContext>(null); 
     } 

Kỹ sư đảo ngược mã đầu tiên sẽ đặt mã này vào để bạn không ghi đè cơ sở dữ liệu hiện tại của mình. Khi tôi chuyển sang, tôi đã không nghĩ về nó.

Hy vọng điều này sẽ giúp người khác ra ngoài.

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