Comment accéder à la base de données dans lightswitch dans une autre classe?
-
29-10-2019 - |
Question
Je ne sais tout simplement pas comment expliquer cela clairement.Je crée donc un modèle d'image simple de ce que j'ai fait.
Ma question est la suivante: comment pourrais-je accéder à ma base de données dans une autre classe en LS?
J'ai cherché sur le net, mais je n'ai trouvé aucune solution.J'espère que je le trouverai ici.
Merci!.
Toute suggestion est déjà appréciée.
La solution
Merci pour la réponse Bryan, mais j'ai trouvé la réponse à mon problème ici Richard Waddell
Voici ce que j'ai fait pour atteindre mon objectif.
- Basculez votre projet LS en vue fichier
- Allez dans le projet "Common", sous le dossier "UserCode", créez une classe (par exemple,
Authenticate.cs
) et mettez ces codes.
Le code suit:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.LightSwitch;
namespace LightSwitchApplication
{
public class Authenticate
{
public static adminuser GetCurrentUser()
{
adminuser userFound = (from useritem in
Application.Current.CreateDataWorkspace().basecampcoreData.adminusers
where useritem.LoginID == Application.Current.User.Name
select useritem).SingleOrDefault();
if (userFound != null)
return userFound;
else
return null;
}
}
}
Vous pouvez maintenant appeler le Authenticate.GetCurrentUser()
n'importe où dans le projet.
Merci!
Autres conseils
La principale différence est que le premier ensemble de code qui fonctionne s'exécute à l'intérieur d'un écran. Pour votre classe Authenticate, vous devez effectuer les étapes suivantes pour accéder à la base de données.
Remarque: je suppose que votre source de données a le nom par défaut ApplicationData puisque vous avez masqué le nom, sinon, apportez les modifications correspondantes. S'il s'agit d'une source de données complètement différente, modifiez "_IntrinsicData" dans les étapes ci-dessous)
Ces étapes sont tirées du Site Web d'aide Lightswitch
Accédez à ..ServerGenerated \ GeneratedArtifacts (dans le projet LightSwitch) et cliquez sur ApplicationData.cs et Ajouter en tant que lien.
Ajoutez le code suivant ci-dessous, ce code crée dynamiquement une connexion à la base de données. LightSwitch utilise "_IntrinsicData" comme chaîne de connexion.
private ApplicationDataObjectContext m_context;
public ApplicationDataObjectContext Context
{
get
{
if (this.m_context == null)
{
string connString =
System.Web.Configuration.WebConfigurationManager
.ConnectionStrings["_IntrinsicData"].ConnectionString;
EntityConnectionStringBuilder builder = new EntityConnectionStringBuilder();
builder.Metadata =
"res://*/ApplicationData.csdl|res://*/ApplicationData.ssdl|res://*/ApplicationData.msl";
builder.Provider =
"System.Data.SqlClient";
builder.ProviderConnectionString = connString;
this.m_context = new ApplicationDataObjectContext(builder.ConnectionString);
}
return this.m_context;
}
}
Vous devriez pouvoir y accéder via Context.adminusers