Pokyny pro tvorbu služeb 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 navrhování 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 Postupy: 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.Pro poskytnutí tohoto textu je třeba na začátek třídy služby domény přidat atribut DescriptionAttribute.
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.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 ve službě generujete entity pomocí Entity Data Model ADO.NET, musí kód vracet 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 Entity Data Model technologie ADO.NET ke generování entit poskytovaných vaší službou.Tento příklad přepisuje metodu CreateObjectContext a vrací připojovací řetězec poskytovateli 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.Pro identifikaci této metody, použijte u metody atribut QueryAttribute.Nastavte vlastnost IsDefaultQueryAttribute na True.Tato metoda musí vrátit buď IEnumerable, nebo IQueryable typu entity.Kolekce vrácená metodou musí obsahovat všechna pole entity.Dotaz nesmí přijmout žádné parametry.Následující příklad používá atribut QueryAttribute na dotazovací metodu 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 či IQueryable 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 Typy hodnot s povolenou hodnotou Null (Visual Basic) nebo Typy s povolenou hodnotou Null (Průvodce programováním v C#).Další informace o jednoduchých typech, které jsou podporovány v aplikaci LightSwitch, viz Postupy: Definování datových polí v databázi LightSwitch.
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 1:N nastavte vlastnost ThisKey na primární klíč entity, která existuje na straně 1. Pro relace 1:N nastavte vlastnost ThisKey na primární klíč entity, která existuje na straně 0 nebo 1. Pro relace 1:1 nebo 1:0 nastavte vlastnost ThisKey na primární klíč entity, která existuje na straně 1.Nastavte vlastnost OtherKey na primární klíč entity, která existuje na straně 0:1. |
|
V LightSwitch, použijte pro určení názvu, který chcete, aby se v tomto poli objevil, vlastnosti ShortName nebo Name.Pro určení textu, který se zobrazí v popisu tlačítka po zaměření ovládacího prvku, který toto pole obsahuje, uživatelem, použijte vlastnost Description. |
|
Nastavíte-li v LightSwitch vlastnost AllowEdit na hodnotu False, bude vlastnost ReadOnly nastavena na hodnotu True. |
|
Nastavíte-li vlastnost EnumType na výčet, vytvoří LightSwitch seznam voleb pro pole, pomocí hodnot výčtu. |
|
V rámci LightSwitch, použijte atribut KeyAttribute, pokud chcete, aby bylo pole 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.Nastavíte-li vlastnost AllowEmptyStrings tohoto atributu na hodnotu False v rámci LightSwitch, bude vlastnost pole Is Required nastavena na hodnotu True. |
|
Nastavíte-li v rámci LightSwitch vlastnost Scaffold na hodnotu True , bude vlastnost Display By Default nastavena na hodnotu True. |
|
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