Sdílet prostřednictvím


Pokyny pro vytvoření služby WCF RIA pro LightSwitch

Toto téma obsahuje pokyny pro vytváření a používání služby Windows Communication Foundation (WCF) Rich Internet Application (RIA) v aplikacích LightSwitch.Toto téma obsahuje informace o následujících úlohách:

  • Ukládání, načítání a používání připojovacích řetězců ve třídě služeb domény služby WCF RIA

  • Definování metod dotazů pro použití v aplikaci LightSwitch

  • Použití atributů u polí entit

Další obecné informace o návrhu služeb WCF RIA, viz Služby WCF RIA.

Ukládání, načítání a používání připojovacích řetězců

Chcete-li se připojit k datům v rámci třídy služby domény služby WCF RIA, musí váš kód předat připojovací řetězec zprostředkovatel zdroje dat.Vývojáři, kteří službu využívají, mohou uložit připojovací řetězec v souboru web.config aplikace LightSwitch při připojení ke službě.Ve třídě služeb domény služby WCF RIA může kód načíst a použít připojovací řetězec.

Gg589479.collapse_all(cs-cz,VS.110).gifUložení připojovacího řetězce

Vývojáři poskytnou připojovací řetězec zdroje dat při připojení k vaší službě WCF RIA v aplikaci LightSwitch.Připojovací řetězec uložen v souboru web.config aplikace LightSwitch.Další informace naleznete v tématu Jak: připojení k datům.

Chcete-li vývojářům pomoci poskytnout správný připojovací řetězec, můžete jim poskytnout užitečný text, který bude popisovat očekávaný formát řetězce.Tento text se zobrazí poli Připojovací řetězec pole průvodce Připojit zdroj dat.Chcete-li poskytnout tento text, přidejte atribut DescriptionAttribute do horní části třídy služby domény.

Gg589479.collapse_all(cs-cz,VS.110).gifNačtení připojovacího řetězce

Ve třídě služby domény služby WCF RIA může kód načíst připojovací řetězec ze souboru web.config odkazováním na plně kvalifikovaný název třídy služby domény (například CustomerNamespace.CustomerService).Následující příklad načte připojovací řetězec přepsáním metody Initialize třídy služby domény.Pokud není nalezen žádný připojovací řetězec používá se pevně definovaný připojovací řetězec.

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(cs-cz,VS.110).gifPoužívání připojovacího řetězce

Ve třídě služby domény se můžete pomocí připojovacího řetězce připojit k datům libovolným způsobem.Některé technologie v aplikaci Visual Studio však vyžadují, aby byl připojovací řetězec použit určitým způsobem.Pokud například budete entity v rámci vaší služby generovat pomocí modelu dat entity ADO.NET, kód musí vrátit připojovací řetězec v metodě CreateObjectContext.Následující příklad vychází ze scénáře, ve kterém jste použili model dat entity ADO.NET ke generování entit poskytovaných vaší službou.Tento příklad přepíše metodu CreateObjectContext a vrátí připojovací řetězec zprostředkovateli 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());
}

Definování metod dotazů, které se používají v aplikaci LightSwitch

Pro každou entitu v rámci třídy služby domény je nutné určit výchozí metodu, pomocí které bude moci aplikace LightSwitch vrátit kolekci entit.Můžete také definovat jiné metody, které vracejí data.

Gg589479.collapse_all(cs-cz,VS.110).gifIdentifikace metody dotazu, kterou aplikace LightSwitch používá ve výchozím nastavení

Všechny entity v aplikaci LightSwitch budou mít alespoň jednu metodu, která vrací kolekci.Tato metoda se objeví v aplikaci LightSwitch a umožňuje vývojářům vytvářet obrazovky, které zobrazí seznamy informací, například zákazníky nebo objednávky.Pro každou entitu v rámci vaší třídy služeb domény je nutné určit, jakou metodu má aplikace LightSwitch používat jako výchozí metodu kolekce.Chcete-li identifikovat tuto metodu, použijte pro metodu atribut QueryAttribute.Nastavte vlastnost IsDefault pro QueryAttribute na hodnotu True.Tato metoda musí vrátit buď IEnumerable<T>, nebo IQueryable<T> typu entity.Kolekce vrácená metodou musí obsahovat všechna pole entity.Dotaz nesmí přijmout žádné parametry.Následující příklad aplikuje atribut QueryAttribute na metodu dotazu GetCustomers entity Customers.

<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(cs-cz,VS.110).gifVytvoření dalších metod dotazu

Můžete vytvořit libovolný počet metod dotazů.Každá metoda dotazu můžete vrátit jednu nebo více entit na základě vlastní logiky, kterou přidáte do metody.V aplikaci LightSwitch můžete používat tyto metody v rámci obchodní logiky nebo k zobrazování dat na obrazovce.Metody dotazu musí vrátit typ entity nebo IEnumerable<T> či IQueryable<T> typu entity.Parametry metod musí být jednoduché typy a typy připouštějící hodnotu null, které jsou podporovány v aplikaci LightSwitch.Další informace o typech připouštějících hodnotu null viz S možnou hodnotou Null typy hodnot (Visual Basic) nebo Typy s možnou hodnotou Null (Příručka programování C#).Další informace o jednoduchých typech, které jsou podporovány v aplikaci LightSwitch, viz Jak: Definice datových polí.

Použití atributů u polí entit

Pro pole entit ve vaší třídě služeb domény můžete používat atributy.Následující tabulka obsahuje návod, jak použít atributy pro dosažení požadovaných výsledků v aplikaci LightSwitch.

Atribut

Použití této vlastnosti v aplikaci LightSwitch

AssociationAttribute

Pro relace typu 1:N nastavte vlastnost ThisKey na primární klíč entity, která existuje v relaci na straně 1.

Pro relace typu 0:1/N nastavte vlastnost ThisKey na primární klíč entity, která v relaci existuje na straně 0 nebo 1.

Pro relace typu 1:0/1 nastavte vlastnost ThisKey na primární klíč entity, která v relaci existuje na straně 1.Nastavte vlastnost OtherKey na primární klíč entity, která v relaci existuje na straně 0:1.

DisplayAttribute

Vlastnost ShortName nebo Name se v aplikaci LightSwitch používá k určení názvu, který se má zobrazit pro dané pole.Pomocí vlastnosti Popis můžete určit text, který se zobrazí jako popis ovládacího prvku, když uživatel přejde myší na ovládací prvek, který obsahuje pole na obrazovce.

EditableAttribute

Pokud v aplikaci LightSwitch nastavíte vlastnost AllowEdit na hodnotu False, bude vlastnost ReadOnly pole nastavena na hodnotu True.

EnumDataTypeAttribute

Pokud nastavíte vlastnost EnumType na výčet, vytvoří aplikace LightSwitch pro pole seznam voleb pomocí hodnot výčtu.

KeyAttribute

Atribut KeyAttribute použijte v aplikaci LightSwitch v případě, že chcete pole použít jako primární klíč entity.Můžete určit více klíčů.

RangeAttribute

Tento atribut slouží k nastavení maximální a minimální hodnoty pole.Tento atribut nemá žádný vliv na nenumerické datové typy.

RequiredAttribute

Tato vlastnost v aplikaci LightSwitch ovlivňuje pouze pole, které jsou typu řetězec.Pokud nastavíte vlastnost AllowEmptyStrings tohoto atributu na False, je v aplikaci LightSwitch vlastnost Je požadováno pole nastavena na hodnotu True.

ScaffoldColumnAttribute

Pokud v aplikaci LightSwitch nastavíte vlastnost Scaffold na hodnotu True, bude vlastnost Zobrazit ve výchozím nastavení nastavena na hodnotu Pravda.

StringLengthAttribute

V LightSwitch nastavte pomocí vlastnosti MaximumLength vlastnost Maximální délka pole.

StringLengthAttribute

Pokud v aplikaci LightSwitch použijete tento atribut, bude vlastnost Zobrazit ve výchozím nastavení nastavena na hodnotu False.

Následující atributy nemají v aplikaci LightSwitch žádný účinek:

  • ConcurrencyCheck

  • DataType

  • DisplayColumn

  • DisplayFormat

  • FilterUIHint

  • MetadataType

  • RegularExpression

  • ScaffoldTable

  • UIHintAttribute