6

Tôi đang sử dụng Mã khung thực thể Đầu tiên 4.3 + Azure và gặp khó khăn khi kết nối với cơ sở dữ liệu. Các lỗi tôi nhận được là như sau (trên truy vấn đầu tiên):Mã khung thực thể Đầu tiên Kết nối Azure

Keyword not supported: 'server'. 

Tôi có kết nối sau thành lập trong Web.config tôi

<configSections> 
    type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.3.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
    </configSections> 

    <connectionStrings> 
    <add name="TestDBContext" 
     connectionString="Server=tcp:[SUBSCR].database.windows.net,1433;Database=[MyDB];User ID=[user];Password=[pass];Trusted_Connection=False;Encrypt=True;PersistSecurityInfo=True" 
     providerName="System.Data.EntityClient" /> 
    </connectionStrings> 

My DbContext triển khai lớp học sử dụng tên chuỗi kết nối của:

public class MyContext : DbContext, IMyContext 
    { 
     public MyContext() 
      : base("TestDBContext") 
     { 
      Configuration.LazyLoadingEnabled = true; 
      Configuration.ProxyCreationEnabled = true; 
     } 

Bạn có thể biết điều gì đang xảy ra không?

Trả lời

0

tôi đã thử như thế này, nó có thể giúp bạn. có thể là 1433 đang gây ra vấn đề, có phải cổng không? hay cái gì? . thử như thế này

kiểm tra liên kết này Windows Azure with Sql

<add name="dbContext" connectionString="Server=tcp:xxxxxxxx.database.windows.net;Database=xxxxxxxx;User [email protected];Password=xxxxxxxxxx;Trusted_Connection=False;Encrypt=True;" providerName="System.Data.EntityClient" /> 
+0

của bạn, nó không hoạt động ... 1433 là cổng mặc định cho máy chủ sql và tôi sao chép chuỗi kết nối từ cơ sở dữ liệu/đăng ký Azure của tôi. –

0

Hãy thử điều này:

Data Source = tcp: YOUR-DATABASE-HERE.database.windows.net, 1433; Cơ sở dữ liệu = GolfRounds; ID người dùng = YOUR-USERNAME @ YOUR-SERVER; Mật khẩu = YOUR-PASSWORD; Trusted_Connection = False; Mã hóa = True;

Ngoài ra còn có một bài viết MSDN tại http://msdn.microsoft.com/en-us/library/windowsazure/ff951633.aspx có thể hữu ích.

+0

Từ khóa không được hỗ trợ: 'nguồn dữ liệu'. –

5

Tôi vừa gặp sự cố tương tự.

Bạn đang thiếu tất cả siêu dữ liệu trong chuỗi kết nối mà Entity Framework yêu cầu. Chuỗi kết nối được cung cấp bởi SQL Azure cần được chèn vào trong tham số provider connection string của chuỗi kết nối của EF.

<add name="MyConnectionString" connectionString="metadata=res://*/Model.Model.csdl|res://*/Model.Model.ssdl|res://*/Model.Model.msl;provider=System.Data.SqlClient;provider connection string=&quot;[PUT SQL AZURE CONN STRING HERE]&quot;" providerName="System.Data.EntityClient" />

Bạn sẽ cần phải sử dụng siêu dữ liệu từ dự án của riêng bạn. Tôi đã lấy siêu dữ liệu đó từ một dự án EF tạo ra từ một cơ sở dữ liệu hiện có.

+1

Tôi đang sử dụng mã EF đầu tiên + DbContext (Tôi không tạo mô hình dữ liệu của mình từ cơ sở dữ liệu) nên tôi không có bất kỳ siêu dữ liệu nào có sẵn tại thời điểm phát triển. –

+7

@Sese Nếu bạn đang sử dụng Code First, thì nhà cung cấp chuỗi kết nối của bạn phải là 'System.Data.SqlClient' không phải' System.Data.EntityClient'. – ryanmcdonnell

2

Tôi gặp vấn đề tương tự. Tôi đã giải quyết, đặt trong web.config chuỗi kết nối này:

<add name="eManagerTurModelConnection" connectionString="metadata=res://*/ORM.eManagerFinanceModel.csdl|res://*/ORM.eManagerFinanceModel.ssdl|res://*/ORM.eManagerFinanceModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=<server>.database.windows.net;Initial Catalog=eManagerTur;Integrated Security=False;User ID=<user>;Password=<Password>;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 

Và sau khi tôi đã xóa chuỗi kết nối của trang web, đã làm việc, vì nó không nhận được chuỗi kết nối mà tôi đã thêm vào web.config của mình.

tiếng Anh xấu ... =)

2

Các nhà cung cấp nên providerName = "System.Data.SqlClient"

tôi kết nối với Azure từ VS và sau đó nhìn vào các thuộc tính và thiết lập chuỗi kết nối của tôi và tên nhà cung cấp.

<add name="context" connectionString="Data Source=myServer,myPort;Initial Catalog=myDBName;Persist Security Info=True;User ID=myUserName;Password=myPassword;" providerName="System.Data.SqlClient"/> 

Sau đó, tôi có thể chạy cơ sở dữ liệu cập nhật mà không gặp vấn đề gì.

-1

Tôi đã gặp sự cố tương tự khi tôi không có quyền truy cập vào siêu dữ liệu, trong trường hợp này, bạn cần sử dụng System.Data.SqlClient làm nhà cung cấp.Bạn cũng sẽ cần phải thêm MultipleActiveResultSets = True vào chuỗi kết nối