(0) exportieren Drucken
Alle erweitern

Vorgehensweise: Herstellen einer Verbindung mit der Azure SQL-Datenbank über WCF Data Services

Letzte Aktualisierung: April 2014

Mithilfe von WCF Data Services (zuvor bekannt als ADO.NET Data Services) können Sie Datendienste erstellen, die das auf Representational State Transfer (REST) basierende Open Data Protocol (OData) implementieren. Da OData auf Standardinternetprotokollen basiert, sind Datendienste für alle Clientanwendungen zugänglich, die in der Lage sind, HTTP-Nachrichten zu senden und zu empfangen sowie XML zu analysieren. Zusätzlich stehen zahlreiche Clientbibliotheken zur Verfügung, die die Nutzung von OData-Feeds unter verschiedenen Anwendungsplattformen erleichtern. Weitere Informationen zu Clientbibliotheken, die OData unterstützen, finden Sie im OData SDK.

Für WCF Data Services muss ein Datendienstanbieter implementiert werden, damit das Datenmodell definiert und Zugriff auf die zugrunde liegenden Datenquelle gewährt werden kann. Mit dem Entity Framework-Anbieter können Sie Datendienste für eine Azure SQL-Datenbank erstellen. Weitere Informationen zur Verwendung von WCF Data Services finden Sie in der WCF Data Services-Dokumentation.

noteHinweis
Legen Sie das Verbindungstimeout beim Öffnen einer Verbindung mit einer Azure SQL-Datenbank auf 30 Sekunden fest.

In diesem Thema wird beschrieben, wie ein einfacher, auf einer Azure SQL-Datenbank basierender Datendienst und eine Azure-Anwendung, die auf den Datendienst zugreift, erstellt werden. In diesem Thema wird die Beispieldatenbank "School" verwendet, die im Abschnitt Vorgehensweise: Migrieren einer Datenbank mithilfe des Assistenten zum Generieren von Skripts (Azure SQL-Datenbank) in Azure SQL-Datenbank bereitgestellt wird.

Für dieses Beispiel müssen das Azure SDK sowie Azure Tools für Microsoft Visual Studio installiert werden. Weitere Informationen zu Azure finden Sie unter Azure SDK. Darüber hinaus muss mithilfe des DSInit-Hilfsprogramms der Entwicklungsspeicherdienst initialisiert werden, der zusammen mit Azure Tools installiert wurde. Der Entwicklungsspeicher muss lediglich einmal initialisiert werden. Weitere Informationen finden Sie unter Entwicklungsspeicher.

Erstellen des Datenmodells

  1. Zeigen Sie in Visual Studio im Menü Datei auf Neu, und klicken Sie dann auf Projekt.

    WarningWarnung
    Sie müssen Visual Studio als Administrator ausführen, um die Azure-Entwicklungsstruktur verwenden zu können.

  2. Wählen Sie im Bereich Projekttypen die Option Web aus. Wählen Sie im Bereich Vorlagen die Option ASP.NET-Webanwendung aus. Geben Sie SchoolApplication in das Feld Name ein, und klicken Sie dann auf OK.

  3. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf SchoolApplication, zeigen Sie auf Hinzufügen, und klicken Sie dann auf Neues Element.

  4. Wählen Sie ADO.NET Entity Data Model aus, geben Sie SchoolDataModel.edmx in das Feld Name ein, und klicken Sie dann auf Hinzufügen.

  5. Wählen Sie im Assistenten für Entity Data Model die Option AusDatenbank generieren aus, und klicken Sie dann auf Weiter.

  6. Klicken Sie auf Neue Verbindung, geben Sie die Informationen für die Datenbank "School" auf dem Azure SQL-Datenbank-Server ein, und klicken Sie auf OK. Wählen Sie Nein, vertrauliche Daten aus der Verbindungszeichenfolge ausschließen. Diese werden im Anwendungscode festgelegt. aus. Klicken Sie dann auf Weiter.

  7. Wählen Sie Tabellen aus, und klicken Sie dann auf Fertig stellen. Dadurch wird eine EDMX-Datei erstellt, die einen Entitätstyp für jede Tabelle in der Datenbank definiert.

    CautionVorsicht
    Deaktivieren Sie das Kontrollkästchen Generierte Objektnamen in den Singular oder Plural setzen, wenn Sie dieses Beispiel in Visual Studio 2010 oder höher ausführen. Wenn Sie dieses Beispiel in Visual Studio 2008 ausführen, kann das Entity Framework die EDMX-Datei und die zugehörigen Clientklassen nicht aus einer Azure SQL-Datenbank erstellen. Es muss eine Verbindung mit einer lokalen SQL Server-Instanz hergestellt werden, um die Modell- und Zuordnungsdateien zu generieren. Das Entity Framework stellt jedoch eine Verbindung mit Microsoft Azure SQL-Datenbank her, wenn die Modell- und Zuordnungsdateien erstellt wurden.

Erstellen des Datendiensts

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf SchoolApplication, zeigen Sie auf Hinzufügen, und klicken Sie dann auf Neues Element.

  2. Wählen Sie WCF Data Service aus, geben Sie SchoolDataService.svc in das Feld Name ein, und klicken Sie dann auf Hinzufügen.

  3. Ersetzen Sie in "SchoolDataService.svc.cs" bzw. "SchoolDataService.svc.vb" den Kommentar /* TODO: put your data source class name here */ in der Definition der Klasse, die den Datendienst definiert, durch den Typ, der der Entitätscontainer des Datenmodells ist (in diesem Fall SchoolEntities). Die Klassendefinition sollte ungefähr wie folgt aussehen:

    
    public class SchoolDataService : DataService<SchoolEntities>
    
  4. Ersetzen Sie den Platzhaltercode in der InitializeService-Funktion durch den folgenden Code, der Zugriff auf die Entitäten Course, Department und Person gewährt:

    
    public static void InitializeService(IDataServiceConfiguration config)
    {
        config.SetEntitySetAccessRule("Course", EntitySetRights.All);
        config.SetEntitySetAccessRule("Department", EntitySetRights.All);
        config.SetEntitySetAccessRule("Person", EntitySetRights.All);
    }
    

Erstellen der Clientanwendung

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Projektmappe, zeigen Sie auf Hinzufügen, und klicken Sie dann auf Neues Projekt.

  2. Wählen Sie im Dialogfeld Neues Projekt hinzufügen im Bereich Projekttypen die Option Cloud-Dienst aus. Geben Sie SchoolSite in das Feld Name ein, und klicken Sie auf OK.

  3. Fügen Sie im Dialogfeld Neues Projekt für den Cloud-Dienst dem Bereich Projektmappe für Cloud-Dienst eine ASP.NET-Webrolle hinzu, und klicken Sie dann auf OK.

  4. Ersetzen Sie die Quelle in "Default.aspx" durch den folgenden Code:

    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1">
        <div>
        
            <asp:DropDownList ID="peopleList" runat="server" 
                onselectedindexchanged="peopleList_SelectedIndexChanged"
        AutoPostBack="True">
            </asp:DropDownList>
            <br />
            <br />
            <asp:Label ID="infoLabel" runat="server"></asp:Label>
            <br />
            
        
        </div>
        </form>
    </body>
    </html>
    

    Dadurch werden eine Dropdownliste mit dem Namen peopleList und ein Label-Steuerelement mit dem Namen infoLabel erstellt.

  5. Drücken Sie F6, um die Anwendung zu erstellen.

  6. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Webrollenprojekt, und klicken Sie dann auf Dienstverweis hinzufügen.

  7. Klicken Sie im Dialogfeld Dienstverweis hinzufügen auf Ermitteln. "SchoolDataService.svc" wird im Bereich Dienste angezeigt. Geben Sie SchoolServiceReference in das Feld Name ein, und klicken Sie dann auf OK. Dadurch wird die Datei mit den Datenklassen hinzugefügt, die auf Datendienstressourcen zugreifen.

Zugreifen auf den School-Datendienst in der Azure-Webrolle

  1. Fügen Sie in Default.aspx.cs bzw. Default.aspx.vb die folgenden using-Anweisungen (Imports in Visual Basic) hinzu:

    
    using System.Data.Services.Client;
    using WebRole1.SchoolServiceReference;
    
  2. Fügen Sie in der Teilklasse die folgenden Deklarationen für den DataServiceContext und den URI zum Datendienst hinzu (der URI, der zuvor im Feld Adresse des Dialogfelds Dienstverweis hinzufügen angezeigt wurde):

    
    private SchoolEntities schoolContext;
    
    //Replace the host server and port number with the values
    // for the test server that is hosting your data service instance.
    private Uri svcUri = new Uri("http://localhost:61925/SchoolDataService.svc");
    
  3. Instanziieren Sie in der Page_Load-Methode den Datendienstkontext, und laden Sie die Dropdownliste mit Informationen vom Datendienst, indem Sie den folgenden Code hinzufügen:

    
    //Instantiate the DataServiceContext
    schoolContext = new SchoolEntities(svcUri);
    
    //Get all person entities from the data service
    DataServiceQuery<Person> people = schoolContext.Person;
    
    //Add each person to the drop down list
    foreach (Person p in people)
    {
        peopleList.Items.Add(new ListItem(String.Concat(p.FirstName.ToString()," ",
                             p.LastName.ToString()), p.PersonID.ToString()));
    }
    
  4. Doppelklicken Sie in der Entwurfsansicht von "Default.aspx" auf die Dropdownliste, um das peopleList_SelectedIndexChanged-Ereignis hinzuzufügen.

  5. Füllen Sie im peopleList_SelectedIndexChanged-Ereignis das Label-Steuerelement basierend auf der ausgewählten Person auf, indem Sie den folgenden Code hinzufügen:

    
    protected void peopleList_SelectedIndexChanged(object sender, EventArgs e)
    {
        //Define a LINQ query that returns information
        // about the selected person.
        var personInfo = (from p in schoolContext.Person
                            where p.PersonID == Convert.ToInt32(peopleList.SelectedItem.Value)
                            select p).FirstOrDefault();
        
        //Display information about the person
        infoLabel.Text = String.Concat("ID: ", personInfo.PersonID.ToString(), " ",
                                        "Enroll Date: ", personInfo.EnrollmentDate.ToString(), " ",
                                        "Hire Date: ", personInfo.HireDate.ToString());
                
    }
    

Migrieren der Anwendung zur SQL-Datenbank.

  1. Migrieren Sie die Datenbank "School" zu Azure SQL-Datenbank, indem Sie den Anweisungen unter Vorgehensweise: Migrieren einer Datenbank mithilfe des Assistenten zum Generieren von Skripts (Azure SQL-Datenbank) folgen.

  2. Öffnen Sie im Projekt SchoolApplication die Datei Web.config. Ändern Sie die Verbindungszeichenfolge, sodass eine Verbindung mit der Azure SQL-Datenbank hergestellt wird.

    
    <connectionStrings>
        <add name="SchoolEntities" connectionString="metadata=res://*/SchoolDataModel.csdl|res://*/SchoolDataModel.ssdl|res://*/SchoolDataModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=<provideServerName>.database.windows.net;Initial Catalog=School;Integrated Security=False;User ID=<provideUserID>;Password=<providePassword>;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False&quot;" providerName="System.Data.EntityClient"/>
    </connectionStrings>
    
  3. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt WebRole1, und wählen Sie Als Startprojekt festlegen aus.

  4. Drücken Sie F5, um die Anwendung auszuführen.

Siehe auch

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft