Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
1513 connectés 

 



 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  58  59  60  61  62  63
Page Suivante
Auteur Sujet :

[Topic unique] .Net @ Prog

n°2339189
gatsu35
Posté le 17-09-2019 à 15:32:43  profilanswer
 

Reprise du message précédent :
Désolé si j'ai mal expliqué,
Dans le projet j'ai énormément de gros pavé de switch/case mais malheureusement étant donné que j'ai une appli qui fait passerelle entre différents SA, il y a beaucoup de mapping de valeur, et je cherchais surtout un moyen de rendre le bazar plus lisible mais il n'y en a pas forcément;

 

En JS j'aurai simplement défini aussi mes clés comme avec un dictionnary et faire comme je l'ai aussi fait en .NET pour exemple :

Code :
  1. var myMap = {
  2.   [keyId] : Keyvalue
  3.   [keyId2] : KeyValue2
  4.   "_default" : defaultValue
  5. };
  6. function myConverterOftrucMuche(key) {
  7.   return myMap.hasOwnProperty[key] ? myMap[key] : myMap[_default];
  8. }
 

Mais pas sûr que ce soit plus rapide qu'un switch/case


Message édité par gatsu35 le 17-09-2019 à 16:16:57
mood
Publicité
Posté le 17-09-2019 à 15:32:43  profilanswer
 

n°2339190
ixemul
Nan mais sans blague ! ⚡
Posté le 17-09-2019 à 16:07:08  profilanswer
 

En spécialisant un peut un Dictionnary, tu peux même te passer du hasownproterty, exemple :
 

Code :
  1. public class MyDico<TKey, TValue> : Dictionary<TKey, TValue>
  2.     {
  3.         private TValue DefaultValue {  get; set; }
  4.         public new TValue this[TKey key] { get { TValue toreturn; if (!base.TryGetValue(key, out toreturn)) toreturn = DefaultValue; return toreturn; } set{ base[key]=value;} }
  5.         public MyDico (TValue defaultValue)
  6.     {
  7.             DefaultValue = defaultValue;
  8.     }
  9.     }
  10. private static MyDico<int, string> test = new MyDico<int, string>("___Default" ) { { 0, "zero" },{1, "un"} };


 
 Console.WriteLine(test[99]);
___Default
 
 
 Console.WriteLine(0);
zero


Message édité par ixemul le 17-09-2019 à 16:07:35

---------------
VA APPRENDRE ET REVIENS QUAND TU SAIS, SINON ABSTIENT TOI C'EST UN GRAND CONSEIL QUE JE TE DONNE... TU ES INCOMPÉTENT ET C'EST UNE RÉALITÉ, TU N'AS RIEN A FAIRE ICI FAUT S'Y CONNAITRE ... -Jojo1998 - RIP - http://tinyurl.com/qc47ftk
n°2339597
DiB91
Bwaaaaaaah
Posté le 29-09-2019 à 09:06:22  profilanswer
 

Les gars, vous savez comment on fait dans une appli .NET (WPF dans mon cas) pour ajouter des transformations de configuration à mon App.config comme on peut le faire au Web.config d'une appli ASP .NET ?
 
Il n'y a pas l'option dans le menu contextuel :??:

n°2339602
Yor_le_Bou​rrin
Posté le 29-09-2019 à 09:41:22  profilanswer
 

Jamais essayé avec un exe.config, seulement sur les web.config. Pour du desktop en général passer par les configurations (debug /release / autre) me suffit. Ça marche pour les settings, mais pas pour le reste par contre, où je me demerde avec du CI/CD.

 

Après en ASP.net core les transformations de web.config ont disparu il me semble, perso je passe par des transformations définies direct dans le csproj en cas de besoin


Message édité par Yor_le_Bourrin le 29-09-2019 à 09:43:25
n°2339603
TotalRecal​l
Posté le 29-09-2019 à 09:51:41  profilanswer
 

C'est qu'en ASP.Net Core le web.config est juste là pour faire plaisir à IIS, la conf se fait par des JSON et (entre autre) la variable Environment.
 


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
n°2339606
Yor_le_Bou​rrin
Posté le 29-09-2019 à 10:18:00  profilanswer
 

Tout à fait. Perso avec iis je préfère quand même rajouter l'environnement direct dans le web.config, c'est le plus fiable et c'est pas long à faire via les deploy.

 

Mais je ne m'emmerde pas quand je passe par docker à y toucher :jap:

n°2340022
DiB91
Bwaaaaaaah
Posté le 10-10-2019 à 11:55:43  profilanswer
 

Messieurs, nouveau petit projet perso :)

 

Avant que je ne parte (potentiellement) dans une mauvaise direction, est-ce que certains par ici ont déjà fait de l'authentification / création de compte / login Facebook sur leur appli ASP .NET MVC :??:

 

Comment ça s'implémente ?
Côté base de données, y a des précos spécifiques ? Une table User avec des champs particuliers ?
Côté appli, il faut des dépendances spécifiques ? C'est compatible ASP .NET MVC (.NET Framework 4.7.2) ?

 

ll existe des packages tout prêts qui proposent une création/authent par Facebook, Twitter, Google etc... :??:

 

Merci d'avance pour vos lumières :)


Message édité par DiB91 le 10-10-2019 à 11:56:12
n°2340024
Yor_le_Bou​rrin
Posté le 10-10-2019 à 12:48:06  profilanswer
 

Tu es en ASP.NET Core plutôt ? Dans tous les cas, ajouter des connecteurs OAuth se gère très bien via le framework Identity :
- https://docs.microsoft.com/en-us/as [...] ual-studio
- https://docs.microsoft.com/en-us/as [...] ual-studio
 
En gros Identity va te rajouter plusieurs tables dans ton projet, avec en plus les méthodes que tu peux attendre au niveau gestion de compte (création / suppression etc.)

n°2340025
DiB91
Bwaaaaaaah
Posté le 10-10-2019 à 12:56:40  profilanswer
 

Super, merci pour ces infos :)
 
Non, je suis en ASP .NET MVC 6 + bootstrap + jQuery sur du .NET Framework 4.7.2 à l'ancienne.
 
J'ai essayé de démarrer en .NET Core, mais j'ai pas été foutu d'y installer EntityFramework (derrière j'ai une base de données SQL Server).

n°2340028
Yor_le_Bou​rrin
Posté le 10-10-2019 à 13:15:40  profilanswer
 

ASP.Net core ne nécessite pas .NET Core. Tu peux faire tes projets en .NET classique sans souci, les dépendances sont en .NET Standard. Aucun problème non plus avec EF 6, même en faisant du DB first. J'ai fait il y a deux ans pour un client un site classique en ASP.Net core framework .NET 4.6 avec bootstrap/jquery : RAS, le dev a été fluide.
 
Prendre du ASP.Net MVC en 2019 (valable depuis 2017 d'ailleurs), c'est :
- Ne pas monter en compétence sur le framework officiel poussé par Microsoft
- Prendre le risque de devoir migrer pour patcher la sécurité ou avoir des nouvelles fonctionnalités exclusives
- Etre limité à IIS pour l'hébergement
- Accessoirement le dev est plus agréable en ASP.Net core, ils ont bien amélioré la structure / API de l'ensemble

Message cité 1 fois
Message édité par Yor_le_Bourrin le 10-10-2019 à 13:16:34
mood
Publicité
Posté le 10-10-2019 à 13:15:40  profilanswer
 

n°2340030
DiB91
Bwaaaaaaah
Posté le 10-10-2019 à 13:53:57  profilanswer
 

Ah bah écoute, étant donné que le projet démarre tout juste (j'ai pas encore démarré d'écrire l'application justement), ça peut être l'occasion :)
 
Je pourrai tout de même déployer sur un IIS dédié ?

n°2340031
TotalRecal​l
Posté le 10-10-2019 à 13:55:15  profilanswer
 

Je suggère aussi de développer direct en MVC Core sur du .Net 4.7 classique si tu veux rester compatible .Net classique dans tes dépendances. Tu peux faire de l'EF6 ou EF Core sans problème.
Et oui pour IIS !


Message édité par TotalRecall le 10-10-2019 à 13:55:59

---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
n°2340032
DiB91
Bwaaaaaaah
Posté le 10-10-2019 à 13:57:02  profilanswer
 

Top, merci à vous deux.
Je vais partir sur ça alors :love:

n°2340047
DiB91
Bwaaaaaaah
Posté le 10-10-2019 à 22:07:33  profilanswer
 

Je progresse :)

 

J'ai démarré un projet d'application web ASP .NET Core, avec MVC.
Ca s'annonce plutôt fluide avec mes connaissances de l'ASP .NET MVC ".NET Framework standard" :)
Quelques trucs un peu rigolos côté config (tout est en JSON, même pour configurer mes Areas MVC, ou ma chaîne de connexion SQL) :D

 

Par contre j'ai un crash dès que j'essaie d'accéder à mes données, dont les appels sont faits via un autre projet "DAL" (bibliothèque de classe standard / EF 6.3.0).
J'ai mon joli petit EDMX configuré, et mes classes de Services qui s'occupent des requêtes Linq.

 

Mais quand j'y accède depuis l'UI (l'appli Core quoi), j'ai une erreur (dans le projet DAL) me stipulant que ma chaine de connexion est introuvable.
https://i.imgur.com/wwmE1qK.png

 

J'ai pourtant bien ajouté la chaine à mon appsettings.json et l'ai référencée au Startup.cs. Du coup je vois pas trop ce que j'ai râté :??:
https://i.imgur.com/VcpEh0d.png
https://i.imgur.com/ObdrUOe.png

 

Bien sûr la chaîne de connexion est aussi présente dans l'app.config de mon projet DAL :
https://i.imgur.com/H3m99G1.png

 

C'est parce que je veux passer par une DLL "Standard" et non "Core" ? :??:

 

EDIT : La structure à ce stade, pour préciser les choses :
https://i.imgur.com/YjFeTds.png
.Web (l'UI) a une référence directe vers la DAL.


Message édité par DiB91 le 10-10-2019 à 22:13:37
n°2340099
Yor_le_Bou​rrin
Posté le 11-10-2019 à 15:33:53  profilanswer
 

Tu es censé utiliser de l'IoC dans ASP.Net Core. C'est sa force principale d'ailleurs. Il faut donc que tu injectes ton contexte dans tes DAL.
 
Ensuite vu que tu utilises du db first (edmx), il faut configurer différemment :
- Dans le startup :

Code :
  1. services.AddScoped<TonDal.DB>(_ => new TonDal.DB(Configuration.GetConnectionString("DefaultConnection" )));


- Et rajoute un DBContext partial (donc du même nom que ton DbContext issu de ton edmx), par exemple :

Code :
  1. namespace TonDal
  2. {
  3.     public class EntityFrameworkConfig : DbConfiguration
  4.     {
  5.         public EntityFrameworkConfig()
  6.         {
  7.             // We set configurations for entity framework here so that we don't have to add it in the app.config
  8.             this.SetDefaultConnectionFactory(new SqlConnectionFactory());
  9.             this.SetProviderServices(SqlProviderServices.ProviderInvariantName, SqlProviderServices.Instance);
  10.         }
  11.     }
  12.     [DbConfigurationType(typeof(EntityFrameworkConfig))]
  13.     public partial class DB : DbContext
  14.     {
  15.         public DB(string connString) : base(connString) { }
  16.     }
  17. }


 
Ah et pendant qu'on y est, l'EDMX n'est pas dispo dans EF Core. Possible qu'il disparaisse d'EF dans les prochaines versions. C'est probablement aussi pour ça qu'il faut gruger (légèrement) pour l'utiliser

n°2340107
DiB91
Bwaaaaaaah
Posté le 11-10-2019 à 16:10:36  profilanswer
 

Excellent, merci beaucoup.
Ouais j'ai vu que c'était plus possible d'ajouter un EDMX à un projet de bibliothèque de classes en EF Core.
Du coup, je sais pas trop comment faire, je me renseigne :jap:

 

EDIT : Je suis tombé sur ce billet : https://docs.microsoft.com/fr-fr/as [...] etcore-2.1
Ca explique comment démarrer avec Entity Framework Core.
C'est orienté code first, mais à mon stade d'avancement, c'est pas trop embêtant, et puis j'ai déjà bossé avec les Migrations.

 

EDIT2 : Bon, j'ai pas mal avancé, j'arrive à mes premières requêtes de données :jap:
Contrairement à ce que semble être la tendance actuelle (pardonnez mon ignorance, j'ai pas vraiment évolué techniquement en 10 ans sur le .NET, pour moi le MVC et le 4.5 sous EF 6.0 c'est déjà la fête :D), j'ai quand même tenu à ce que mes entités et mon contexte DB soient dans deux projets séparés.
Fonctionnellement ça change rien (pas de Repository pattern, pas de micro services, pas d'implémentation séparée ici…) mais ça simplifie grandement l'arborescence, je trouve, de ne pas avoir les entités dans Models, mélangées aux ViewModels et autres helpers en tout genre…

 

En tout cas ça marche, les bonnes vieilles habitudes ont la vie dure, mais la nouveauté est appréciable :
+ le moteur d'injection de dépendance intégré ! salutaire ! (= le dbcontext présent nativement dans mes contrôleurs MVC)
+ plus besoin de faire gaffe à la chaine de connexion qui doit être présente et identique dans TOUS les projets de la solution concernés ! (quelle galère ça !)
+ tout se fait en appels asynchrones. Perso je suis pas fan, j'aime avoir accès à mes données au debuggage, donc je suis revenu à des bon vieux ToList() synchrones et lents, je survivrai

 

Quelques habitudes à revoir cependant :
- tout est à écrire à la main, je n'ai pas trouvé d'autre moyen que d'écrire mes entities et les enregistrer dans ma classe de contexte DB à la main. Sur un projet comme ça avec 2 tables, ça va (quasi code first en fait…), mais sur un projet immense avec des dizaines de tables, c'est clairement un budget temps conséquent ! Là, je regrette franchement mon Entity Model Designer et ses EDMX tant décriés.
- les contrôleurs MVC se compliquent un peu, y a la gestion de l'injection de dépendance qui prend de la place et impose certaines rigueurs, les paramètres Httppost ont l'air un peu plus galère et à renseigner à la main
- pour que le scaffolding fonctionne à la création d'un contrôleur, il FAUT que les clés primaires des tables en base de données soient rigoureusement nommées "ID" ou "matableID". C'est une régression, EF "classique" était franchement plus flexible sur ce point. Encore une fois, ça m'ira parce que mon projet démarre, mais sur une base de données qui a 5 ans, c'est clairement une étape qui va bloquer.

Message cité 1 fois
Message édité par DiB91 le 12-10-2019 à 14:26:53
n°2340285
ov3rflow
Overrage
Posté le 15-10-2019 à 17:32:16  profilanswer
 

Yor_le_Bourrin a écrit :

ASP.Net core ne nécessite pas .NET Core. Tu peux faire tes projets en .NET classique sans souci, les dépendances sont en .NET Standard. Aucun problème non plus avec EF 6, même en faisant du DB first. J'ai fait il y a deux ans pour un client un site classique en ASP.Net core framework .NET 4.6 avec bootstrap/jquery : RAS, le dev a été fluide.
 
Prendre du ASP.Net MVC en 2019 (valable depuis 2017 d'ailleurs), c'est :
- Ne pas monter en compétence sur le framework officiel poussé par Microsoft
- Prendre le risque de devoir migrer pour patcher la sécurité ou avoir des nouvelles fonctionnalités exclusives
- Etre limité à IIS pour l'hébergement
- Accessoirement le dev est plus agréable en ASP.Net core, ils ont bien amélioré la structure / API de l'ensemble


 
Sauf que pour ASP.NET Core 3 ce n'est plus le cas


---------------
GO XSARA
n°2340303
Yor_le_Bou​rrin
Posté le 16-10-2019 à 12:08:58  profilanswer
 

DiB91 a écrit :


- tout est à écrire à la main, je n'ai pas trouvé d'autre moyen que d'écrire mes entities et les enregistrer dans ma classe de contexte DB à la main. Sur un projet comme ça avec 2 tables, ça va (quasi code first en fait…), mais sur un projet immense avec des dizaines de tables, c'est clairement un budget temps conséquent ! Là, je regrette franchement mon Entity Model Designer et ses EDMX tant décriés.


Si si, bien évidemment il y a un outil de reverse-engineering. La solution est assez documentée, il faut passer par Scaffold-DbContext  : https://docs.microsoft.com/en-us/ef [...] caffolding
 
C'est infiniment plus propre que les EDMX, qui sont une catastrophe à gérer en équipe avec leurs milliers de fichiers qui bougent dès que tu déplaces une table.
 

ov3rflow a écrit :


Sauf que pour ASP.NET Core 3 ce n'est plus le cas


Ah oui j'avais vu passer l'info à l'époque de la RC. Je n'ai pas encore joué avec ASP.NET Core 3 pour vérifier ceci-dit.

n°2340305
DiB91
Bwaaaaaaah
Posté le 16-10-2019 à 14:02:00  profilanswer
 

Yor_le_Bourrin a écrit :


Si si, bien évidemment il y a un outil de reverse-engineering. La solution est assez documentée, il faut passer par Scaffold-DbContext  : https://docs.microsoft.com/en-us/ef [...] caffolding
 
C'est infiniment plus propre que les EDMX, qui sont une catastrophe à gérer en équipe avec leurs milliers de fichiers qui bougent dès que tu déplaces une table.
 


 
Ah oui ça je te l'accorde (le travail en équipe sur l'EDMX).
Perso, j'ai jamais eu une modif d'équipe sur un tel fichier sans que ça ne se finisse en brainstorming dans l'outil de résolution de conflits.
Mais après, pour moi tout seul qui ne suis pas DBA pour un centime, c'est quand même super pratique et rapide.

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  58  59  60  61  62  63
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
service web REST en VB.NET HeySpreadRequete Access avec paramètres, éxécutée en VB .Net
impersonalisation sous ASP.NET[Topic Unique] les blagues pourries de harko et florentg
Generation d'un GIF en ASP.NETAppeler un service web .NET sécurisé en Java
Prog Visual Basic "periodicité"[Oracle] Temps d'execution de requete tres long par rapport au .NET
[VB.NET] Lister des imprimantes réseauxFusion de résultats de requêtes dans une unique Table
Plus de sujets relatifs à : [Topic unique] .Net @ Prog


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR