2012-06-18 9 views
10

Tôi đang cố gắng sử dụng Mã đầu tiên với phiên bản Sql Server 2008 R2 cục bộ của mình. Tôi đã tạo một người dùng 'dev' và có thể đăng nhập và tạo cơ sở dữ liệu bằng Sql Managment Studio. Vấn đề là tôi tiếp tục nhận được một thông báo lỗi khi cố tạo một cơ sở dữ liệu bằng DbContext trong EntityFramework. Đây là thông báo lỗi:Mã khuôn khổ thực thể Lỗi đầu tiên "Lỗi định vị máy chủ/cá thể được chỉ định"

"A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified"

Thông báo lỗi Tôi đã kiểm tra máy chủ Sql và cho phép kết nối từ xa.

Tôi đã trừu tượng hóa hệ thống của tôi với đoạn mã sau và nhận được lỗi tương tự:

namespace CodeFirstConsole 
{ 
    public class Program 
    { 
     static void Main(string[] args) 
     { 
      var db = new MyContext(); 
      try { Console.WriteLine(db.Parents.Count()); } 
      catch (Exception) { throw; } 
      Console.Read(); 
     } 
    } 

    internal class MyContext : DbContext 
    { 
     public DbSet<ParentObject> Parents { get; set; } 
     public DbSet<ChildObject> Children { get; set; } 

     public MyContext() 
     { 
      this.Database.Connection.ConnectionString = 
       "Data Source=.;Database=ConsoleTest;Initial Catalog=ConsoleTest;User ID=dev;Password=dev;"; 
     } 
    } 

    internal class ParentObject 
    { 
     public int Id { get; set; } 
     public string PropertyOne { get; set; } 
    } 

    internal class ChildObject 
    { 
     public int Id { get; set; } 
     public bool PropertyOne { get; set; } 
     public string PropertyTwo { get; set; } 

     public virtual ParentObject Parent { get; set; } 
    } 

    internal class MyInitializer : DropCreateDatabaseAlways<MyContext> 
    { 

     protected override void Seed(MyContext context) 
     { 
      context.Parents.Add(new ParentObject() { PropertyOne = "hi" }); 
      base.Seed(context); 
     } 
    } 
} 
+0

Bạn đã cố gắng chỉ định rõ nguồn dữ liệu, tôi biết nếu bạn để trống nó nghĩ rằng nó cùng một máy nhưng hãy thử đặt nó vào và cách và xem bạn có nhận được kết quả tương tự không. –

+0

Có, tôi đã chỉ định rõ ràng trong ví dụ của mình khi tôi đặt chuỗi kết nối. –

+1

Chỉ cần kiểm tra rõ ràng là mã ở trên mà bạn đã viết cũng nằm trên máy SQL Server bạn đang kết nối phải không? Chỉ cần kiểm tra. –

Trả lời

21

Tôi đã gặp lỗi tương tự khiến tôi mất khoảng một ngày. Tình hình của tôi là tôi đã có một giải pháp lớn với một dự án khởi động đã có từ trước và tôi đã bổ sung EF cho dự án kiên trì.

Vì vậy, bước đầu tiên là thêm phụ thuộc EF. Điều này tạo ra một app.config trong dự án kiên trì của tôi với nội dung EF chính xác. Sau đó, tôi đã chuyển sang Bật-di chuyển và gặp lỗi tương tự trong bài đăng này. Tại thời điểm này, tôi đã không nghĩ đến việc sao chép các cài đặt ứng dụng EF.config vào app.config của dự án khởi động vì tôi nghĩ rằng tôi sẽ phải chơi xung quanh với nó trước khi tôi cuối cùng sẽ chạy ứng dụng.

Sự cố đã được giải quyết khi tôi thay đổi dự án khởi động giải pháp thành dự án kiên trì để tôi có thể yêu cầu EF tìm đúng app.config. Hoặc tôi có thể đã sao chép phần liên quan EntityFramwework vào app.config của dự án khởi động.

+2

Cảm ơn bạn rất nhiều. Tôi đã đập đầu của tôi chống lại điều này. –

+0

Câu trả lời này có thể vừa mới tiết kiệm thời gian của tôi! Cảm ơn bạn –

+2

Dự án khởi động ...! Bạn xứng đáng được ôm! – Lernkurve

0

Hãy thử có một cái nhìn ở đây nó giải thích rất nhiều nguyên nhân, kể từ khi bạn chỉ ra trong các ý kiến ​​mà bạn đã làm một cách rõ ràng chỉ định tên máy chủ và mã chạy cũng trên cùng một máy như máy chủ sql vì từ những gì tôi thấy nguồn dữ liệu chỉ có một dấu chấm, chỉ ra rằng cùng một máy của nó như là chương trình mã C# đang chạy.

http://blogs.msdn.com/b/sql_protocols/archive/2007/05/13/sql-network-interfaces-error-26-error-locating-server-instance-specified.aspx

0

Phải thêm phụ thuộc EntityFramework vào dự án khởi động.

Install-Package EntityFramework 

Và cũng phải xác định connectionStrings cho dự án chính của tôi App.config/Web.config.

<connectionStrings> 
    <add name="Database" providerName="System.Data.SqlClient" connectionString="foo.bar" /> 
</connectionStrings> 
1

Phải chăng báo lỗi tương tự phát triển trên địa phương , nhưng hôm qua nó hoạt động tốt. Tắt dự án sai trong giải pháp đã được thiết lập làm Dự án khởi động.

Vì vậy, nếu bạn cũng nhận được thông báo này sau khi lệnh cập nhật cơ sở dữ liệu trong Bảng điều khiển quản lý gói, hãy đảm bảo kiểm tra xem dự án StartUp đã được thiết lập chưa.

Ví dụ: dự án Web chứ không phải một trong các dự án trợ giúp. Visual studio dường như có thói quen thiết lập các dự án khác như bản thân StartUp đôi khi ...

0

Tôi đã gặp phải vấn đề tương tự và đã dành cả ngày trên đó. Cuối cùng tìm thấy câu trả lời @ Christian và bây giờ tôi tìm thấy một cách tốt hơn nhiều!

Đặt ConnectionString trong dự án khởi động. Vì vậy, bạn không cần phải chuyển đổi mỗi khi bạn thay đổi một thực thể.