Richtlinien zum Erstellen von WCF-RIA-Diensten für LightSwitch

Dieses Thema enthält Richtlinien zum Erstellen und Nutzen von WCF RIA-Diensten (Windows Communication Foundation Rich Internet Application) in einer LightSwitch-basierten Anwendung.Dieses Thema enthält Informationen zu folgenden Aufgaben:

  • Speichern, Abrufen und Verarbeiten von Verbindungszeichenfolgen in der Domänendienstklasse eines WCF RIA-Diensts

  • Definieren von Abfragemethoden zur Verwendung in einer LightSwitch-basierten Anwendung

  • Anwenden von Attributen auf die Felder einer Entität

Allgemeine Informationen zum Entwerfen von WCF RIA-Diensten finden Sie unter WCF RIA Services.

Speichern, Abrufen und Verarbeiten von Verbindungszeichenfolgen

Um innerhalb der Domänendienstklasse eines WCF RIA-Diensts eine Verbindung mit Daten herzustellen, muss im Code eine Verbindungszeichenfolge an den Datenquellenanbieter übergeben werden.Entwickler, die den Dienst nutzen, können die Verbindungszeichenfolge in der Datei "web.config" der LightSwitch-Anwendung speichern, wenn sie eine Verbindung mit dem Dienst herstellen.In der Domänendienstklasse des WCF RIA-Diensts kann die Verbindungszeichenfolge im Code abgerufen und verarbeitet werden.

Gg589479.collapse_all(de-de,VS.110).gifSpeichern der Verbindungszeichenfolge

Entwickler stellen eine Datenquellenverbindungszeichenfolge bereit, wenn sie eine Verbindung mit dem WCF RIA-Dienst in LightSwitch herstellen.Die Verbindungszeichenfolge wird in der Datei "web.config" der LightSwitch-Anwendung gespeichert.Weitere Informationen finden Sie unter Gewusst wie: Herstellen der Verbindung mit Daten.

Damit Entwickler wissen, welche Verbindungszeichenfolge angegeben werden muss, können Sie einen Hilfetext bereitstellen, in dem das erwartete Zeichenfolgenformat beschrieben wird.Dieser Text wird im Feld Verbindungszeichenfolge des Assistenten zum Hinzufügen von Datenquellen angezeigt.Um diesen Text zur Verfügung zu stellen, fügen Sie oben in der Domänendienstklasse das DescriptionAttribute-Attribut hinzu.

Gg589479.collapse_all(de-de,VS.110).gifAbrufen der Verbindungszeichenfolge

In der Domänendienstklasse des WCF RIA-Diensts kann der Code die Verbindungszeichenfolge aus der Datei "web.config" abrufen, indem auf den vollqualifizierten Namen der Domänendienstklasse verwiesen wird (z. B. CustomerNamespace.CustomerService).Im folgenden Beispiel wird eine Verbindungszeichenfolge abgerufen, indem die Initialize-Methode der Domänendienstklasse überschrieben wird.Wenn keine Verbindungszeichenfolge gefunden wird, wird eine hartcodierte Verbindungszeichenfolge verwendet.

Public Overrides Sub Initialize _
    (context As System.ServiceModel.DomainServices.Server.DomainServiceContext)
    
    If (WebConfigurationManager.ConnectionStrings.Item(Me.[GetType]().FullName) _
        Is Nothing) OrElse [String].IsNullOrWhiteSpace _
    (WebConfigurationManager.ConnectionStrings.Item _
     (Me.[GetType]().FullName).ConnectionString) Then
        
        _connectionString = "data source=NorthwindDB;initial catalog= " _
            & "Northwind;user id=myID;password=myPassword"
    Else
        _connectionString = WebConfigurationManager.ConnectionStrings.Item _
            (Me.[GetType]().FullName).ConnectionString
    End If

    MyBase.Initialize(context)
End Sub
        
string _connectionString;
public override void Initialize
    (System.ServiceModel.DomainServices.Server.DomainServiceContext context)
    {
        if ((WebConfigurationManager.ConnectionStrings
            [(this.GetType().FullName)] == null) || 
            String.IsNullOrWhiteSpace(WebConfigurationManager.ConnectionStrings
            [this.GetType().FullName].ConnectionString))
        {
            _connectionString = "data source=NorthwindDB;initial catalog= " + 
                "Northwind;user id=myID;password=myPassword";
        }
        else
        {
            _connectionString = WebConfigurationManager.ConnectionStrings
                [this.GetType().FullName].ConnectionString;
        }
        base.Initialize(context);
    }

Gg589479.collapse_all(de-de,VS.110).gifVerarbeiten der Verbindungszeichenfolge

In der Domänendienstklasse können Sie über die Verbindungszeichenfolge eine beliebige Verbindung mit den Daten herstellen.Einige Technologien in Visual Studio erfordern jedoch, dass Sie die Verbindungszeichenfolge auf bestimmte Art und Weise verwenden.Wenn Sie die Entitäten im Dienst z. B. mit einem ADO.NET Entity Data Model generieren, muss der Code die Verbindungszeichenfolge in der CreateObjectContext-Methode zurückgeben.Das folgende Beispiel basiert auf einem Szenario, in dem Sie ein ADO.NET Entity Data Model verwendet haben, um die vom Dienst bereitgestellten Entitäten zu generieren.In diesem Beispiel wird die CreateObjectContext-Methode überschrieben und die Verbindungszeichenfolge an den Entity Framework-Anbieter zurückgegeben.

Protected Overrides Function CreateObjectContext() As NorthwindEntities
    Dim Connection As New EntityConnectionStringBuilder()
    Connection.ProviderConnectionString = _connectionString
    Connection.Provider = "System.Data.SqlClient"
    Connection.Metadata = "res://*/NorthwindModel.csdl|" & _
                 "res://*/NorthwindModel.ssdl|" & _
                 "res://*/NorthwindModel.msl"

    Return New NorthwindEntities(Connection.ToString)
End Function
protected override NorthwindEntities2 CreateObjectContext()
{
    EntityConnectionStringBuilder Connection = new EntityConnectionStringBuilder();
    Connection.ProviderConnectionString = _connectionString;
    Connection.Provider = "System.Data.SqlClient";
    Connection.Metadata = "res://*/NorthwindModel.csdl|" +
                 "res://*/NorthwindModel.ssdl|" +
                 "res://*/NorthwindModel.msl";
    return new NorthwindEntities2(Connection.ToString());
}

Definieren von Abfragemethoden, die in LightSwitch genutzt werden

Für jede Entität in der Domänendienstklasse müssen Sie eine Standardmethode identifizieren, mit der LightSwitch eine Auflistung von Entitäten zurückgeben kann.Sie können auch andere Methoden definieren, die Daten zurückgeben.

Gg589479.collapse_all(de-de,VS.110).gifIdentifizieren einer Abfragemethode, die LightSwitch standardmäßig verwendet

Alle Entitäten in LightSwitch verfügen mindestens über eine Methode, die eine Auflistung zurückgibt.Diese Methode ist in LightSwitch verfügbar und ermöglicht es Entwicklern, Bildschirme zu erstellen, die Listen mit Informationen anzeigen, z. B. Kunden- oder Bestelllisten.Für jede Entität in der Domänendienstklasse müssen Sie die Methode angeben, die LightSwitch als Standardmethode für die Auflistung verwenden soll.Um diese Methode zu identifizieren, wenden Sie das QueryAttribute-Attribut auf die Methode an.Legen Sie die IsDefault-Eigenschaft von QueryAttribute auf True fest.Diese Methode muss entweder ein IEnumerable<T>- oder IQueryable<T>-Element des Entitätstyps zurückgeben.Die von der Methode zurückgegebene Auflistung muss alle Felder der Entität enthalten.Die Abfrage darf keine Parameter akzeptieren.Das folgende Beispiel wendet das QueryAttribute-Attribut auf die GetCustomers-Abfragemethode der Customers-Entität an.

<Query(IsDefault:=True)> _
Public Function GetCustomers() As IQueryable(Of Customer)
    Return Me.ObjectContext.Customers
End Function
[Query(IsDefault=true)]
public IQueryable<Customer> GetCustomers()
{
    return this.ObjectContext.Customers;
}

Gg589479.collapse_all(de-de,VS.110).gifErstellen von anderen Abfragemethoden

Sie können beliebig viele Abfragemethoden erstellen.Jede Abfragemethode kann eine oder mehrere Entitäten auf Grundlage einer benutzerdefinierten Logik zurückgeben, die Sie der Methode hinzufügen.In LightSwitch können Sie diese Methoden in der Geschäftslogik ausführen oder sie verwenden, um Daten auf einem Bildschirm anzuzeigen.Abfragemethoden müssen einen Entitätstyp oder ein IEnumerable<T>- oder IQueryable<T>-Element eines Entitätstyps zurückgeben.Methodenparameter müssen auf NULL-Werte festlegbare und einfache Typen sein, die von LightSwitch unterstützt werden.Weitere Informationen zu Typen, die auf Null-Werte festgelegt werden können, finden Sie unter Auf NULL festlegbare Werttypen (Visual Basic) und Typen, die NULL-Werte zulassen (C#-Programmierhandbuch).Weitere Informationen zu einfachen Typen, die in LightSwitch unterstützt werden, finden Sie unter Gewusst wie: Definieren von Datenfeldern.

Anwenden von Attributen auf die Felder einer Entität

Sie können Attribute auf die Felder von Entitäten in der Domänendienstklasse anwenden.Die folgende Tabelle enthält Hinweise zur Verwendung von Attributen, um einen gewünschten Effekt in LightSwitch zu erreichen.

Attribut

Verwenden dieser Eigenschaft in LightSwitch

AssociationAttribute

Legen Sie die ThisKey-Eigenschaft für 1:n-Beziehungen auf den Primärschlüssel der Entität auf der 1-Seite der Beziehung fest.

Legen Sie die ThisKey-Eigenschaft für 0-oder-1:n-Beziehungen auf den Primärschlüssel der Entität auf der 0-oder-1-Seite der Beziehung fest.

Legen Sie die ThisKey-Eigenschaft für 1:0-oder-1-Beziehungen auf den Primärschlüssel der Entität auf der 1-Seite der Beziehung fest.Legen Sie die OtherKey-Eigenschaft auf den Primärschlüssel der Entität auf der 0:1-Seite der Beziehung fest.

DisplayAttribute

Verwenden Sie in LightSwitch die ShortName-Eigenschaft oder die Name-Eigenschaft, um den Namen anzugeben, der für dieses Feld angezeigt werden soll.Verwenden Sie die Description-Eigenschaft, um den Text anzugeben, der als QuickInfo angezeigt werden soll, wenn Benutzer auf ein Steuerelement zeigen, in dem das Feld in einem Bildschirm enthalten ist.

EditableAttribute

Wenn Sie die AllowEdit-Eigenschaft in LightSwitch auf False festlegen, wird die ReadOnly-Eigenschaft des Felds auf True festgelegt.

EnumDataTypeAttribute

Wenn Sie die EnumType-Eigenschaft auf eine Enumeration festlegen, erstellt LightSwitch mit den Werten der Enumeration eine Auswahlliste für das Feld.

KeyAttribute

Verwenden Sie in LightSwitch das KeyAttribute-Attribut, wenn das Feld als Primärschlüssel der Entität verwendet werden soll.Sie können mehrere Schlüssel angeben.

RangeAttribute

Verwenden Sie dieses Attribut, um den Maximal- und Minimalwert für das Feld festzulegen.Dieses Attribut hat keine Auswirkungen auf nicht numerische Datentypen.

RequiredAttribute

In LightSwitch wirkt sich diese Eigenschaft nur auf Felder mit einem Zeichenfolgentyp aus.Wenn Sie die AllowEmptyStrings-Eigenschaft dieses Attributs auf False festlegen, wird in LightSwitch die Ist erforderlich-Eigenschaft des Felds auf True festgelegt.

ScaffoldColumnAttribute

Wenn Sie die Scaffold-Eigenschaft in LightSwitch auf True festlegen, wird die Standardmäßig anzeigen-Eigenschaft auf True festgelegt.

StringLengthAttribute

Verwenden Sie in LightSwitch die MaximumLength-Eigenschaft, um die Maximale Länge-Eigenschaft des Felds festzulegen.

StringLengthAttribute

Wenn Sie dieses Attribut in LightSwitch anwenden, wird die Standardmäßig anzeigen-Eigenschaft des Felds auf False festgelegt.

Die folgenden Attribute haben in LightSwitch keine Auswirkungen:

  • ConcurrencyCheck

  • DataType

  • DisplayColumn

  • DisplayFormat

  • FilterUIHint

  • MetadataType

  • RegularExpression

  • ScaffoldTable

  • UIHintAttribute