A Propos de l'auteur

Name of author Bruno Raby
Je suis un passionné de développement logiciel et j'ai trouvé le projet BlogEngine.NET superbe. J'ai créé ce blog pour apporter ma contribution au développement des applications webs et des différents StarterKits.

Ecrivez moi Send mail

Calendrier

<<  March 2010  >>
MoTuWeThFrSaSu
22232425262728
1234567
891011121314
15161718192021
22232425262728
2930311234

View posts in large calendar

Recent comments

Authors

Disclaimer

The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

© Copyright 2010

Sign in

LINQ to DataSet

by Bruno 6/10/2009 5:16:00 PM

Je veux réaliser une jointure dans le code.

J'ai conservé la base ASPNETDB pour la gestion de tous les utilisateurs de la communauté, leurs authentification par MemberShipUser SQL provider.

Pour les besoins de mon application, j'ai une Base de Données avec une table qui gérent les infos spécifiques de mes Membres ce que l'on ne trouve pas dans ASPNETDB.

La jointure entre les deux tables se fait par le MembreGUID d'un côté et par le UserId dans ASPNETDB.

LINQ doit pouvoir me faire la jointure, dans le code, sans que je modifie mes tables, mes bases, mes procédures stockées car je sais que déployer de telles modifications ce n'est pas une sinécure.

Voici comment j'effectue ma jointure :

    private void BuildDataSource()
    {
        ///
        /// Acces aux donnes
        ///

        // On peut recuperer les MemberUser mais on ne sait pas quoi en faire
        MembershipUserCollection muc = Membership.GetAllUsers();

        // Preparation de l'appel a la procedure stockee aspnet_Membership_GetAllUsers
        SqlParameter[] parameters = new SqlParameter[ 3 ];
        parameters[ 0 ] = new SqlParameter( "@ApplicationName", SqlDbType.VarChar );
        parameters[ 0 ].Value = "/"; // Application.ToString();
        parameters[ 1 ] = new SqlParameter( "@PageIndex", SqlDbType.Int );
        parameters[ 1 ].Value = 0;
        parameters[ 2 ] = new SqlParameter( "@PageSize", SqlDbType.Int );
        parameters[ 2 ].Value = 5000;

        // Infos du User
        DataSet dsUser = new DataSet();
        dsUser = SqlDataProvider.ExecuteDataset
        (
            System.Configuration.ConfigurationManager.ConnectionStrings[ "LocalSqlServer" ].ConnectionString,
            CommandType.StoredProcedure,
            "aspnet_Membership_GetAllUsers",
            parameters
        );

        // Infos du membre
        DataSet dsMember = new DataSet();
        dsMember = SqlDataProvider.ExecuteDataset
        (
            Tools.DatabaseConnectionString,
            CommandType.StoredProcedure,
            "GetMemberInfoAll"
        );

        ///
        /// La Jointure
        ///
        DataTable dtMember = dsMember.Tables[ 0 ];
        DataTable dtUser = dsUser.Tables[ 0 ];

        IEnumerable<DataRow> memberQuery =
            from member in dtMember.AsEnumerable()
            select member;

        IEnumerable<DataRow> userQuery =
            from user in dtUser.AsEnumerable()
            select user;

        var userMemberQuery =
            from m in memberQuery.AsEnumerable()
            join u in userQuery.AsEnumerable()
            on m.Field<Guid>( "MembreGUID" ) equals u.Field<Guid>( "UserId" )
            orderby m.Field<Guid>( "MembreGUID" ) descending
            select new
            {
                MembreGuid = m[ "MembreGUID" ],
                NomUtilisateur = m[ "NomUtilisateur" ],
                MotDePasse = m[ "MotDePasse" ],
                Nom = m[ "Nom" ],
                Prenom = m[ "Prenom" ],
                Societe = m[ "Societe" ],
                Telephone = m[ "Telephone" ],
                Adresse = m["Adresse" ],
                IsApproved = u["IsApproved" ],
            };
       
        //
        // Construction de la table de resultats
        //
        DataTable userMember = new DataTable();
        DataColumn[] colums = new DataColumn[ dtUser.Columns.Count + dtMember.Columns.Count ];
        dtUser.Columns.CopyTo( colums, 0 );
        dtMember.Columns.CopyTo( colums, dtUser.Columns.Count);
        foreach ( DataColumn dc in colums )
        {
            DataColumn dc1 = new DataColumn();
            dc1.ColumnName = dc.ColumnName;
            userMember.Columns.Add( dc1 );
        }

        foreach ( var row in userMemberQuery )
        {
            DataRow r = userMember.NewRow();
            r[ "MembreGUID" ] = row.MembreGuid;
            r[ "NomUtilisateur" ] = row.NomUtilisateur;
            r[ "MotDePasse" ] = row.MotDePasse;
            r[ "Nom" ] = row.Nom;
            r[ "Prenom" ] = row.Prenom;
            r[ "Societe" ] = row.Societe;
            r[ "Telephone" ] = row.Telephone;
            r[ "Adresse" ] = row.Adresse;
            r[ "IsApproved" ] = row.IsApproved;

            userMember.Rows.Add( r );
        }

        GridViewMembers.DataSource = userMember; // userMemberQuery; // userMember;
        GridViewMembers.DataBind();
    }

J'ai beaucoup lu, il y a surement des optimisations possibles à ce code, dites moi.

Quand je suis tombé là dessus, j'ai crié : Euréca ! Alors je pense que cela pouvoir servir à vous aussi.

Have fun in ASP.NET C# Development !

Mais n'abusez pas des jointures dans le code C# ce n'est pas optimum.

Sans vous commander, j'ai besoin de flux ici :

Questionnaire en ligne

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: , ,

Microsoft dynamic

by Bruno 12/10/2008 8:22:00 PM

Microsoft dynamic

What is about customer relation ship management ?

http://www.sodevlog.fr/ASP.NET.Blog/page/Microsoft-Dynamics-CRM-30.aspx

Visite our sponsored links :

Questionnaire en ligne 

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: , , , ,

Spamhaus de merde

by Bruno 11/25/2008 8:38:00 AM

Je sais le titre est un peu dur !

Mais que faire ! J'ai tout essayé et mon hébergeur ; http://www.hebergement.com/ n'y entend rien non plus. AliceAdsl n'en parlons pas. C'est la fin du mutualisé comme peuvent l'écrire quelque internautes dans le forum OVH sur le sujet avec une autre BD de soit disant spammeurs : Sorbs mais je pense que le problème est un peu le même.

Que faire devant un tel désarrois !

http://forum.ovh.com/archive/index.php/t-34407.html

Que pouvons nous faire, nous les vrais internautes, ceux qui aiment partager leur savoir, échanger avec le plus grand nombre sur des solutions techniques, des astuces. Rien ! On ne peut rien faire ! Et au lieu d'avancer, nous sommes englués dans la publicité. On veut nous retirer la pub des chaines publiques, mais allez y, courage ! Moi il y a bien longtemps que je ne la regarde plus ! Je zappe sans relache dès que la moindre pub se présente.

Pour les Spamhaus de merde et autre saloprie du même genre Sorbs et consors, ce serait tellement facile, simplement par exemple en vérifiant le MailTo le Cci et le Bcc afin de verifier que le mail est valide. Mieux, ils pourraient vérifier que le nom et le prénom sont présents que l'expéditeur connait ses destinataires.

Il ne le font pas pour une simple raison ; il faut laisser passer les spammeurs, c'est gros connards de publicitaire. C'est le nerf de guerre ; le commerce. Quitte à empêcher de pauvres Internautes comme nous de communiquer avec leurs proches.

Vous avez vu le film de Frédéric Beigbeder : 99 francs ...

Currently rated 5.0 by 1 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

emailling

Eclipse PHP Zend Debugger

by Bruno 10/28/2008 6:44:00 AM

Ne pensez pas que j'abandonne ASP.NET mais il faut bien avoir un peu de curiosité de temps en temps.

Aussi je me lance dans l'aventure de WAMP5, pour écrire des applications en PHP, j'avais déjà un peu titiller cette plateforme, je tente maintenant d'installer une "vraie" machine de développement et les outils permettant de travailler correctement et il semble que pour utiliser un debugueur, il faille en passer par là :

http://www.thierryb.net/pdtwiki/index.php?title=Using_PDT_:_Installation_:_Installing_the_Zend_Debugger

Eclipse, Apache2, PHP5, MySQL5, Zend Debugger, cela n'en fini pas.

Bon courage, chez moi ça marche mais cela n'a pas été sans peine.

Currently rated 5.0 by 1 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

WAMP

DotShoppingCart Service Broker

by Bruno 9/9/2008 5:52:00 AM

Lorsque vous désirez copier la BD dotshoppingcart pour effectuer une sauvegarde par exemple.

Pour continuer d'utiliser votre site web installé, vous rattachez la base et là une erreur serveur :

Erreur du serveur dans l'application '/DotShopping'.
--------------------------------------------------------------------------------

Le Service Broker SQL Server de la base de données actuelle n'est pas activé. Par conséquent, les notifications de requête ne sont pas prises en charge. Activez le Service Broker pour cette base de données si vous souhaitez utiliser des notifications.
Description : Une exception non gérée s'est produite au moment de l'exécution de la demande Web actuelle. Contrôlez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.

Bla bla bla !

Voici un petit script SQL qui va vous sauver la vie :

-- Utiliser l'instruction ci-dessous pour vérifier l'état du bit is_broker_enabled
SELECT is_broker_enabled FROM sys.databases WHERE name = 'dotshoppingcart' ;

-- Utiliser l'instruction ci-dessous pour remettre le bit is_broker_enabled à 1
--USE master ;
--GO
--ALTER DATABASE dotshoppingcart SET ENABLE_BROKER ;
--GO

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

DotShoppingCart

by Bruno 8/29/2008 11:39:00 AM

Je suis un peu dérouté par l'évolution des StarterKits. Ils m'ont pourtant été d'une aide précieuse dans le passé.
Mais aujourd'hui où est passé l'esprit OpenSource ? Je trouvais déjà que SubSonic était une violation de l'esprit de simplicité que se doit de conserver un StarterKit.

Quelqu'un aurait-il un exemplaire du DotShoppingCart qui fonctionne ?
Je veux bien sûr parler des sources avec une BD correctement configurée et un attachement automatique à SQL express par exemple ce que l'on fait maintenant.

Je n'y suis pas arrivé, pourtant j'ai tout fait lancé des batchs des exes des sqls mais rien n'y fait.

Les plantages que j'obtiens sont d'un autre monde, dans WebDevEnv.exe notamment mais pas seulement, le journal des évènements explose et j'en passe.

DW20.exe lui aussi part en live en prenant 100% de la charge CPU.

En visitant leur Site :
http://www.dotshoppingcart.com/Page/Buy.aspx

On comprendra aisément que tout est à vendre :

DotShoppingCart Suite V2.1
$995.00

Ca fait cher l'OpenSource.

Dans le CodePlex :
http://www.codeplex.com/dotshoppingcart

N'est pas non plus d'une très grande utilité car vous double-cliquez sur la solution et là ...

Au secours !?

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

ASP.NET | SQL Server

Office Outlook 2007 - le bug de la mort qui tue

by Bruno 7/24/2008 4:56:00 PM

Il faut bien leur taper dessus de temps en temps, de toute les façons la société de Redmond ne réagit pas ou bien beaucoup plus tard avec un SP1 2 ou 3 voir 4 encore que. Et maintenant que Billou est parti cela ne va pas s'arranger.

Cinq jours maintenant, cela fait cinq jours que je ne reçois plus aucun email. Au début je me disais pas grave, c'est les vacances et je commence à recevoir des coups fils de certains qui m'envoient des trucs, du travail, et je dis non, je n'ai rien reçu !

Je sais bien que je n'ai rien reçu, puisque lorsque Outlook 2007 fait envoyer/recevoir ça plante comme une merde avec des messages de folie du genre contactez votre ISP !? Connexion impossible au serveur POP alors que je le ping les doigts dans le nez.

More...

Currently rated 5.0 by 1 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Questionnaire en ligne

by Bruno 7/3/2008 12:52:00 PM

Nouvelle application web éditée par la SoDevLog en ce début d'année 2008 : le "Questionnaire en ligne"

Découvrez le site dédié à cette application web :

http://www.sodevlog.fr/Questionnaire.en.ligne

Parmi les outils du web marketing, voici un outil original qui vous permet d'avoir une relation privilégiée avec vos contacts.
Bien plus qu'une simple Newsletter, le "Questionnaire en ligne" vous permet de mieux connaitre vos contacts et leurs attentes par rapport à vos services, vos produits.

Je vous invite à découvrir l'application en ligne, côté conception des Questionnaires et Administration de l'application à l'adresse suivante :
http://www.sodevlog.fr/QuestionnaireEnLigneDemo

Informations de connexions :

Nom d'utilisateur : invité
Mot de passe : invité

Découvrez l'application côté interviewés à l'adresse suivante en répondant au Questionnaire sur ma société la SoDevLog :
http://www.sodevlog.fr/Questionnaire/Contact/Register.aspx?uid=4ef8a1fd-7b55-40aa-9301-3f110aaa7447&qid=12

Merci de vous enregistrer dans ce formulaire, afin de répondre au Questionnaire sur la SoDevLog.

C'est un peu le binse, la pagaille, le bazar, lorsque l'on ouvre une application web en utilisation de la sorte.

De plus, ce n'est pas des utilisateurs motivés qui viennent explorer les fonctionnalités, mais des gens qui font n'importe quoi.

Aussi nous ne le faisons plus. Mais nous obligeons les gens à s'inscrire afin de tester légèrement leurs motivations.

Pour découvrir l'application, il suffit de vous inscrire pour recevoir les informations de connexion d'un compte d'utilisateur.

Alors SVP mettez votre vrai nom, une vraie adresse email, pour recevoir de vraies informations.

N'hésitez pas, nous ne sommes pas des revendeurs d'adresses emails, ce n'est pas notre business !

Cordialement votre.

Currently rated 5.0 by 1 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: , , ,

Applications Webs | ASP.NET

Microsoft DotNet Framework 3.5 - petit soucis

by Bruno 7/1/2008 4:03:00 AM

Problème de déploiement sur  un serveur en production

D'aucun disaient que le framework 3.0 n'était je site : "qu'une surcouche du framework 2.0".

Il ne doit pas en aller de même pour le framework 3.5 qui pèse environ 197 Mo !

Et comment déployer tout ça, sur un serveur en production qui pour des raisons de sécurité  évidentes n'a pas accès à Internet !

More...

Currently rated 5.0 by 1 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Applications Webs | ASP.NET

Authentification dans les applications web

by Bruno 6/21/2008 3:36:00 AM

A force de déployer des applications web, notamment lors du dernier déploiement des sites vitrines. J'ai pu constater un comportement auquel je ne m'attendais pas. J'ai déployé 3 sites vitrines d'un coup avec le même nom d'utilisateur et le même mot de passe. Quelle ne fut pas ma surprise lorsque j'eus pu naviguer de l'une à l'autre dans la partie administration des 3 applications en même temps.

Remarquez c'était assez partique, je pouvais administrer les trois applications sans avoir à me relogguer.

Attention de bien gérer la partie suivante du web.config :

<authentication mode="Forms">
   <forms name=".ASPXLOGIN" loginUrl="~/Member/Login.aspx" enableCrossAppRedirects="false"/>
 </authentication>

Si plusieures de vos applications webs déploiyées sur le même serveur on le même "forms name" vous pouvez naviguer d'une application à l'autre sans vous relogguer !

Et puis j'ai découvert le paramètre enableCrossAppRedirects que je mets maintenant à false.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Applications Webs | ASP.NET | Langage C# solutions

Powered by BlogEngine.NET 1.2.1.0
Theme by Mads Kristensen