Bonjour,
Je cherche à mettre en place un service WCF qui va se charger de mettre à disposition pour des clients (un terminal WPF), une méthode permettant d'obtenir une liste d'alerte texte. Je cherche à produire une liste contenant titre, texte, date de début de l'alerte date de fin, ainsi que le mode et la priorité de l'alerte (ces deux paramètres ont chacun leur table).
Pour garantir un cohérence dans mes données j'ai ajouté une table de mappage.
Mon problème est que je n'arrive pas à produire une variable de sortie pour ma liste. Je ne connais pas la bonne syntaxe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 List<Alert> lstAlert = new List<Alert>(); using (DSdatabaseEntitiesService = new DSdatabaseEntitiesService ()) { var query = from p in aserv.Alertlog join mp in aserv.AlertMap on p.AlertID equals mp.AlertID join md in aserv.AlertMode on mp.AlertModeID equals md.AlertModeID join pr in aserv.AlertPriority on mp.AlertPriorityID equals pr.AlertPriorityID where p.AlertActive == true select new {AlertID = p.AlertID, AlertMode = md.AlertModeCde, AlertPriority = pr.AlertPriority, AlertTitle = p.AlertTitle, AlertText = p.AlertText, AlertStartDate = p.AlertStartDate, AlertEndDate = p.AlertEndDate}; foreach (AlertLog singleAlert in query) { Alert a = new Alert(); a.alertId = singleAlert.AlertID; a.alertModeCde = singleAlert.AlertMode; a.alertPriorityCde = singleAlert.AlertPriority; a.AlertTitle = singleAlert.AlertTitle ; a.AlertText =singleAlert.AlertText ; a.AlertStartDate = singleAlert.AlertStartDate ; a.AlertEndDate = singleAlert.AlertEndDate ; lstAlert.Add(a); } } return lstAlert; }
J'ai un soucis déjà dans mon instruction "select new"
AlertModeCde est une chaine de type String et AlertMode le nom de la classe de données. Je ne sais pas comment synchroniser les deux (genre AlertModeCde = md.AlertModeCde)
Code : Sélectionner tout - Visualiser dans une fenêtre à part AlertMode = md.AlertModeCde
Si je retire ces deux paramètres pour test, j'ai une erreur "impossible de convertir le type "AnonumousType#1" en "AlertServiceDev.AlertLog" . Je sais que c'est le "select new" qui fait ça, mais je ne vois pas comment résoudre le problème
Si je fais comme ça
L'interface du Service WCF s'ouvre, mais si je teste la méthode, j'obtient une erreur "le type d'entitité ou le type complexe DSdatabaseModel.AlertLog"
Code : Sélectionner tout - Visualiser dans une fenêtre à part select new AlertLog
ne peut pas être construit dans une requête LINQ to entities.
Classe AlertLog (générée par EF)
En vous remerciant de vos lumières
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 public partial class AlertLog { public AlertLog() { this.AlertMap = new HashSet<AlertMap>(); } public int AlertID {get;set;} public string AlertTitle public string AlertText public DateTime AlertStartDate {get;set;} public DateTime AlertEndDate {get;set;} public bool AlertActive {get;set;} public virtual ICollection<AlertMap> AlertMap {get;set;} public virtual AlertMode AlertMode {get;set} public virtual AlertPriority AlertPriority {get;set} }
Cordialement
Partager