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.
Speichern 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.
Abrufen 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);
}
Verarbeiten 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.
Identifizieren 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;
}
Erstellen 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 |
---|---|
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. |
|
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. |
|
Wenn Sie die AllowEdit-Eigenschaft in LightSwitch auf False festlegen, wird die ReadOnly-Eigenschaft des Felds auf True festgelegt. |
|
Wenn Sie die EnumType-Eigenschaft auf eine Enumeration festlegen, erstellt LightSwitch mit den Werten der Enumeration eine Auswahlliste für das Feld. |
|
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. |
|
Verwenden Sie dieses Attribut, um den Maximal- und Minimalwert für das Feld festzulegen.Dieses Attribut hat keine Auswirkungen auf nicht numerische Datentypen. |
|
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. |
|
Wenn Sie die Scaffold-Eigenschaft in LightSwitch auf True festlegen, wird die Standardmäßig anzeigen-Eigenschaft auf True festgelegt. |
|
Verwenden Sie in LightSwitch die MaximumLength-Eigenschaft, um die Maximale Länge-Eigenschaft des Felds festzulegen. |
|
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