Udostępnij za pośrednictwem


Wskazówki dotyczące tworzenia usług WCF w RIA dla LightSwitch

Ten temat zawiera wskazówki dotyczące tworzenia i używania usług Windows Communication Foundation (WCF) Rich Internet Application RIA w aplikacji LightSwitch.W tym temacie podano informacje dotyczące następujących zadań:

  • Przechowywanie, pobieranie i zużywanie parametrów połączenia w klasie usługi domeny usługi WCF RIA.

  • Definiowanie metod zapytania używany w aplikacji opartej na LightSwitch

  • Stosowanie atrybutów do pól jednostki

Aby uzyskać więcej informacji o projektowaniu usług WCF RIA, zobacz Usługi WCF RIA.

Przechowywanie, pobieranie i zużywanie parametrów połączenia

Aby połączyć z danymi z klasy usługi domeny usługi WCF RIA, kod musi przekazać parametry połączenia do dostawcy źródła danych.Programiści, którzy zużywają usługi mogą przechowywać parametry połączenia w pliku web.config aplikacji LightSwitch, gdy łączą się z usługą.W klasie usługi domeny usługi WCF RIA kod może pobrać i wykorzystać parametry połączenia.

Gg589479.collapse_all(pl-pl,VS.110).gifZapisywanie parametrów połączenia

Programiści podają parametry połączenia źródła danych podczas łączenia się z usługą WCF RIA w LightSwitch.Parametry połączenia są zapisywane w pliku web.config aplikacji LightSwitch.Aby uzyskać więcej informacji, zobacz Jak: połączenia z danymi.

Aby ułatwić programistom podanie poprawnych parametrów połączenia, można udostępnić tekst pomocy, opisujący oczekiwany format parametrów.Ten tekst jest wyświetlany w polu Parametry połączeniaKreatora dołączania źródła danych.Aby udostępnić ten tekst, dodaj atrybut DescriptionAttribute na początku klasy usługi domeny.

Gg589479.collapse_all(pl-pl,VS.110).gifPobieranie parametrów połączenia

W klasie usługi domeny usługi WCF RIA, kod może pobrać parametry połączenia z pliku web.config odwołując się do w pełni kwalifikowanej nazwy klasy usługi domeny (na przykład CustomerNamespace.CustomerService).Poniższy przykład pobiera parametry połączenia przez zastąpienie metody Initialize klasy usługi domeny.Jeśli parametry połączenia nie zostaną znalezione, są używane parametry połączenia kodowania.

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(pl-pl,VS.110).gifUżywanie parametrów połączenia

W klasie usługi domeny można użyć parametrów połączenia, aby połączyć się z danymi w jakikolwiek sposób.Jednak niektóre technologie w programie Visual Studio wymagają, aby użyć parametrów połączenia w określony sposób.Na przykład w przypadku generowania jednostek w usłudze przy użyciu modelu danych jednostki ADO.NET, kod musi zwracać parametry połączenia w metodzie CreateObjectContext.Poniższy przykład jest oparty na scenariuszu, w którym użyto modelu danych jednostki ADO.NET, aby wygenerować jednostki dostarczane przez usługę.Ten przykład zastępuje metodę CreateObjectContext i zwraca parametry połączenia z dostawcą Entity Framework.

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());
}

Definiowanie metod zapytania, które są zużywane w LightSwitch

Dla każdego obiektu klasy usługi domeny należy określić domyślną metodę, której LightSwitch może użyć do zwracania zbioru obiektów.Można także zdefiniować inne metody, które zwracają dane.

Gg589479.collapse_all(pl-pl,VS.110).gifIdentyfikowanie metody zapytania, której LightSwitch używa domyślnie

Wszystkie jednostki w LightSwitch mają co najmniej jedną metodę, która zwraca kolekcję.Metoda ta pojawia się w LightSwitch i umożliwia programistom tworzenie ekranów, pokazujących wykazy informacji, takie jak klienci lub zamówienia.Należy określić domyślną metodę, której LightSwitch ma używać do zwracania zbioru obiektów, dla każdej jednostki w klasie usługi domeny.Aby określić tę metodę, zastosuj atrybut QueryAttribute metody.Ustaw właściwość IsDefault atrybutu QueryAttribute na True.Ta metoda zwraca IEnumerable<T> lub IQueryable<T> typu jednostki.Kolekcja zwracana przez metodę musi zawierać wszystkie pola jednostki.Zapytanie nie może akceptować żadnych parametrów.Następujący przykład dotyczy stosowania atrybutu QueryAttribute do metody zapytania jednostki GetCustomersCustomers.

<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(pl-pl,VS.110).gifTworzenie innych metod zapytań

Można utworzyć dowolnie wiele metod zapytania.Każda metoda zapytania może zwracać jedną lub więcej jednostek opartych na logice niestandardowej, która jest dodawana do metody.W LightSwitch można uruchomić te metody w logice biznesowej lub użyć ich do wyświetlania danych na ekranie.Metody zapytania muszą zwracać typ jednostki lub IEnumerable<T> lub IQueryable<T> typu jednostki.Parametry metody muszą być prostymi typami nullable, które są obsługiwane przez LightSwitch.Aby uzyskać więcej informacji na temat typów nullable, zobacz Typy wartości null (Visual Basic) lub Typy Nullable (Podręcznik programowania C#).Aby uzyskać więcej informacji na temat typów prostych, które są obsługiwane w LightSwitch, zobacz Jak: Definiowanie pól danych.

Stosowanie atrybutów do pól jednostki

Atrybuty można zastosować do pól jednostek w klasie usługi domeny.Poniższa tabela zawiera wskazówki dotyczące używania atrybutów, aby osiągnąć pożądany efekt w LightSwitch.

Atrybut

Za pomocą tej właściwości w LightSwitch

AssociationAttribute

Dla relacji jeden do wielu, ustaw właściwość ThisKey na klucz podstawowych jednostki, która istnieje po jednej stronie relacji.

Dla relacji zero lub jeden do wielu, ustaw właściwość ThisKey na klucz podstawowych jednostki, która istnieje po stronie zero lub jeden relacji.

Dla relacji jeden do zera lub jednego, ustaw właściwość ThisKey na klucz podstawowych jednostki, która istnieje po jednej stronie relacji.Ustaw właściwość OtherKey na klucz podstawowych jednostki, która istnieje po stronie zero do jeden relacji.

DisplayAttribute

W LightSwitch, użyj właściwości Nazwa_skrócona lub Nazwa, aby określić nazwę, która ma być wyświetlana dla tego pola.Użyj właściwości Opis, aby określić tekst, który ma być wyświetlany jako etykietka, gdy użytkownicy wskażą na formant, który zawiera pole na ekranie.

EditableAttribute

W LightSwitch, jeżeli właściwość AllowEdit zostanie ustawiona na False, właściwość ReadOnly pola zostanie ustawiona na True.

EnumDataTypeAttribute

Jeśli właściwość EnumType zostanie ustawiona na wyliczenie, LightSwitch tworzy listę wyboru dla pola przy użyciu wartości wyliczenia.

KeyAttribute

W LightSwitch, użyj atrybutu KeyAttribute, aby pole było używane jako klucz podstawowy jednostki.Można określić wiele kluczy.

RangeAttribute

Atrybutu tego można użyć, aby ustawić maksymalne i minimalne wartości pola.Atrybut ten nie ma wpływu na typy danych nienumerycznych.

RequiredAttribute

W LightSwitch, właściwość ta dotyczy tylko pola typu ciąg.Jeśli właściwość AllowEmptyStrings tego atrybutu False, LightSwitch, właściwość pola Jest wymagane jest ustawiona na True.

ScaffoldColumnAttribute

W LightSwitch, jeżeli właściwość Scaffold zostanie ustawiona na True, właściwość Display By Default pola zostanie ustawiona na True.

StringLengthAttribute

W LightSwitch, użyj właściwości MaximumLength, aby ustawić właściwość Maksymalna długość pola.

StringLengthAttribute

W LightSwitch, jeżeli stosuje się ten atrybut, właściwość Wyświetlanie domyślne pola jest ustawiona na False.

Następujące atrybuty nie mają wpływu na LightSwitch:

  • ConcurrencyCheck

  • Typ danych

  • DisplayColumn

  • DisplayFormat

  • FilterUIHint

  • MetadataType

  • RegularExpression

  • ScaffoldTable

  • UIHintAttribute