2012-06-16 26 views
6

Tôi có một ứng dụng web mã đầu tiên của EF hoạt động tốt và kết nối với máy chủ cơ sở dữ liệu một cách chính xác. Tôi đã thêm một ứng dụng giao diện điều khiển vào giải pháp để kiểm tra logic cho một dịch vụ sẽ đi cùng với ứng dụng.Ứng dụng Giao diện điều khiển khung thực thể kết nối với cơ sở dữ liệu sai

Đã có một đầu trầy xước về lý do tại sao ứng dụng giao diện điều khiển không lưu dữ liệu, vì vậy tôi đã bỏ nó xuống một lần tìm nạp đơn giản từ cơ sở dữ liệu và hóa ra ứng dụng bàn điều khiển gốc đã lưu bản ghi, nhưng vào cơ sở dữ liệu khác so với những gì được chỉ định trong chuỗi kết nối.

Đây là chuỗi kết nối từ app.config:

<add name="DatabaseContext" connectionString="Data Source=xxx.xx.x.xx; Initial Catalog=OKWU_Gateway; User ID=xxxxx; Password=********; Trusted_Connection=False;" providerName="System.Data.SqlClient" /> 
    <add name="DevelopmentEntities" connectionString="metadata=res://*/EntityModel.csdl|res://*/EntityModel.ssdl|res://*/EntityModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=;Data Source=|DataDirectory|\OKWU_Gateway.mdf" providerName="System.Data.EntityClient" /> 

Các DatabaseContext là

Ứng dụng giao diện điều khiển là rất đơn giản

Database.SetInitializer<DatabaseContext>(null); 
    static void Main(string[] args) 
    { 
     using (DatabaseContext db = new DatabaseContext()) 
     { 
      var query = from u in db.Users where u.Id == 1 select u; 
      foreach (User u in query) 
      { 
       Console.WriteLine(u.Id + " " + u.FirstName + " " + u.LastName); 
      } 
      Console.ReadLine(); 
     } 
    } 

nhưng thay vì kết nối với db trên máy chủ từ xa nó đang kết nối với sqlexpress trên máy dev và nhấn cơ sở dữ liệu này.

UniversityGateway.Data.DatabaseContext 

Tôi đã thử thay đổi chuỗi kết nối để trỏ | DataDirectory | đến chuỗi kết nối SQL và không tạo ra bất kỳ sự khác biệt nào. Các chuỗi kết nối giống như những gì có trong web.config và như tôi đã nói, ứng dụng web hoạt động tốt.

Bất kỳ ý tưởng nào về những gì tôi thiếu hoặc chỉ cho tôi đúng hướng để giải quyết vấn đề này?

+0

chỉ cần kiểm tra ... bạn không có bất kỳ tệp tài nguyên đi lạc nào xung quanh bạn? –

+1

lý do tại sao một người nào đó sẽ downvote điều này và không bận tâm để lại một bình luận. – Brian

+1

Trình tạo ngữ cảnh của bạn trông như thế nào? –

Trả lời

0

OK sau nhiều lần đào tôi đã tìm được giải pháp. Không chắc chắn nếu nó là đúng/tốt nhất nhưng nó hoạt động vì vậy tôi có thể di chuyển trên.

Kể từ khi ứng dụng giao diện điều khiển đã không được tôn trọng chuỗi kết nối trong app.config, tôi đã chỉ định kết nối trong mã với

db.Database.Connection.ConnectionString 

Tuy nhiên cảm thấy như tôi là thiếu một cái gì đó ở đây mặc dù.

Phát hiện thêm một phần vấn đề của tôi là EF Codefirst không hoạt động tốt với kiểu dữ liệu Sql Server 2005 DateTime.

+1

Có một cơ hội tốt vấn đề liên quan đến hàm tạo của lớp DbContext của bạn, vì vậy hãy làm theo bình luận của @Ladislav và dán nó vào câu hỏi của bạn. – kingdango

+0

thực sự là bởi vì các kiểu dữ liệu datetime của ef không đồng bộ với kiểu dữ liệu datetime của sql 2005. Nếu chúng ta đã tạo một tệp emdx từ một cơ sở dữ liệu hiện có thì chúng ta có thể thêm thiết lập mã thông báo providermanifest để cho phép nó chạy tốt đẹp với năm 2005, nhưng sử dụng mã đầu tiên không phải là một tùy chọn. Sửa lỗi đó khi viết lại. – Brian

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