Condividi tramite


Utilizzo del tipo di dati Person

Se si utilizza il tipo di dati Person si possono aggiungere e gestire dati correlati agli utenti nella propria applicazione LightSwitch. Person è un tipo business basato sul tipo String in .NET Framework. Il tipo di dati Person è stato progettato per archiviare l'identità degli utenti: valori che identificano in modo univoco gli utenti.

È possibile memorizzare qualsiasi valore di identità desiderato in un campo di Person, ma LightSwitch farà alcune assunzioni sul formato dell'identità a seconda del tipo di autenticazione dell'applicazione.

  • Per l'autenticazione basata su form, LightSwitch utilizzerà il nome di accesso del form come valore di identità.

  • Per l'autenticazione di Windows, LightSwitch utilizzerà il nome di accesso di Windows di quell'utente, ad esempio Contoso\JoeSmith.

  • Per le applicazioni SharePoint abilitate, incluse le applicazioni Cloud Business, l'identità è l'indirizzo di posta elettronica principale dell'utente.

  • Se la propria applicazione non utilizza l'autenticazione e gli utenti sono anonimi, le loro identità vengono rappresentate da stringhe vuote.

  • È inoltre possibile utilizzare un valore speciale TestUser che rappresenta l'identità di un utente che esegue l'applicazione in modalità di debug (F5).

Proprietà Info

La classe dell'identità generata dal modello di dati include due proprietà per ogni campo di Person: la proprietà che contiene l'identità non elaborata (di tipo String) e una proprietà che termina con un suffisso "Info" di tipo PersonInfo (la proprietà info). Ad esempio, la proprietà di identità "Employee" ha una proprietà info corrispondente denominata "EmployeeInfo". Analogamente, la proprietà di identità Owner viene abbinata ad una proprietà info OwnerInfo.

Le proprietà info sono di sola lettura. L'origine dei loro dati è un servizio directory. È possibile utilizzare il valore della proprietà info nel codice per scrivere vari tipi di logica di business. Ad esempio, di seguito viene illustrato come utilizzare la proprietà info dell'entità per inviare un messaggio di posta elettronica quando un utente controlla un documento:

Private Partial Sub Documents_Updating(entity As Document)
If entity.Details.Properties.CheckedOutTo.IsChanged AndAlso Not String.IsNullOrEmpty(entity.CheckedOutTo) Then

Dim owner As O365PersonInfo = entity.OwnerInfo
Dim currentUser As O365PersonInfo = entity.CheckedOutToInfo


If String.IsNullOrEmpty(owner.FullName) OrElse String.IsNullOrEmpty(currentUser.FullName) Then
' We could not resolve the owner or the current user of the document.
' Continue without sending email.
Return
End If
Dim emailBody As String = "Your document " & Convert.ToString(entity.AssetNumber) & " (" & Convert.ToString(entity.Description) & ") has been checked out to " & Convert.ToString(entity.CheckedOutToInfo.FullName)

SendEmail("DocumentTracker@example.com", entity.OwnerInfo.Email, "Document " & Convert.ToString(entity.AssetNumber) & " checked out", emailBody)
End If
End Sub
partial void Documents_Updating(Document entity)
{
    if (entity.Details.Properties.CheckedOutTo.IsChanged
        && !string.IsNullOrEmpty(entity.CheckedOutTo))
    {

        O365PersonInfo owner = entity.OwnerInfo;
        O365PersonInfo currentUser = entity.CheckedOutToInfo;
 

        if (string.IsNullOrEmpty(owner.FullName)
            || string.IsNullOrEmpty(currentUser.FullName))
        {
            // We could not resolve the owner or the current user of the document.
            // Continue without sending email.
            return;
        }
        string emailBody = "Your document " + entity.AssetNumber
            + " (" + entity.Description + ") has been checked out to "
            + entity.CheckedOutToInfo.FullName;

        SendEmail("DocumentTracker@example.com", 
            entity.OwnerInfo.Email, 
            "Document " + entity.AssetNumber + " checked out", 
            emailBody);
    }
}

Se la proprietà di identità contiene un valore che la directory non riconosce, la proprietà info restituisce un oggetto che rappresenta l'identità non risolta e non elaborata e le informazioni complete sugli utenti non sono disponibili.

Le applicazioni Sharepoint abilitate di LightSwitch (applicazioni Cloud Business) utilizzano Active Directory o Azure Active Directory (per le applicazioni SharePoint e per quelle basate su cloud, rispettivamente) per recuperare le informazioni di contatto, organizzative e le informazioni relative alla sicurezza sugli utenti. Se l'applicazione utilizza l'autenticazione di Windows o quella basata su form, vengono esposte solo le informazioni di base relative alla sicurezza tramite le proprietà info.

Dati utente correnti

Le informazioni sull'utente corrente dell'applicazione sono disponibili tramite la proprietà User dell'oggetto globale Application (Application.User). Come illustrato nel seguente esempio, questa proprietà restituisce un oggetto di tipo PersonInfo, in modo da poter gestire l'utente corrente e gli altri utenti nell'applicazione nello stesso modo.

Private Partial Sub Documents_Inserting(entity As Document)
' If the Owner has not been set, assume the current user is the owner
If String.IsNullOrEmpty(entity.Owner) Then
entity.Owner = Application.User.PersonId
End If
End Sub
partial void Documents_Inserting(Document entity)
{
    // If the Owner has not been set, assume the current user is the owner
    if (string.IsNullOrEmpty(entity.Owner))
    {
        entity.Owner = Application.User.PersonId;
    }
}

La proprietà PersonId recupera l'identità dell'utente corrente in un formato adatto al meccanismo di autenticazione che verrà utilizzato dall'applicazione.

Vedere anche

Attività

Procedura: definire campi di dati in un database LightSwitch

Procedura: implementare il rilevamento delle righe