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.
Ulož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.
Nač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);
}
Použí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.
Identifikace 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;
}
Vytvoř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 |
---|---|
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. |
|
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. |
|
Pokud v aplikaci LightSwitch nastavíte vlastnost AllowEdit na hodnotu False, bude vlastnost ReadOnly pole nastavena na hodnotu True. |
|
Pokud nastavíte vlastnost EnumType na výčet, vytvoří aplikace LightSwitch pro pole seznam voleb pomocí hodnot výčtu. |
|
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íčů. |
|
Tento atribut slouží k nastavení maximální a minimální hodnoty pole.Tento atribut nemá žádný vliv na nenumerické datové typy. |
|
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. |
|
Pokud v aplikaci LightSwitch nastavíte vlastnost Scaffold na hodnotu True, bude vlastnost Zobrazit ve výchozím nastavení nastavena na hodnotu Pravda. |
|
V LightSwitch nastavte pomocí vlastnosti MaximumLength vlastnost Maximální délka pole. |
|
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