none
Dataset et entities RRS feed

  • Question

  • Bonjour,

     

    Ma DAL renvoi un Datset à ma BLL, et afin d'etre le plus dependant possible je souhaite le tranformer en une entité avnt de la renvoyer à ma couche UI.

     

    Qq'un aurait il un code exemple ?

     

    Merci

    mardi 30 septembre 2008 08:11

Réponses

  • Bonjour,

     

    Cela ne sert à rien... Et coute énormément en performance !

    Soit votre DAL et la BLL utilise des entités, soit vous utilisez uniquement des DataSet. Dans le cas des entités, utilisez la classe DbDataReader pour remplir votre objet métier.

     

    Petite information : Vous êtes actuellement en train de réinventer la roue, si vous souhaitez faire tout ceci en 30 secondes, utilisez Linq To SQL ou Linq To Entities. Vous disposez des designers pour créer vos entités et 3 lignes de codes vous aurez executez une requête (typé en plus...).

     

    Cordialement

     

    mardi 30 septembre 2008 15:05
    Modérateur
  • Bonjour,

     

    Voici un extrait du MSDN (modifié pour votre cas) :

    http://msdn.microsoft.com/fr-fr/library/system.data.sqlclient.sqldatareader(VS.80).aspx

     

    On suppose qu'il existe une entité métier (class) Order avec un constructeur Order(int, int)

     

    Code Snippet

    private static void ReadOrderData(string connectionString)
    {
        string queryString =
            "SELECT OrderID, CustomerID FROM dbo.Orders;";

        using (SqlConnection connection =
                   new SqlConnection(connectionString))
        {
            SqlCommand command =
                new SqlCommand(queryString, connection);
            connection.Open();

            SqlDataReader reader = command.ExecuteReader();

     List<Orders> listOfOrders;

            // Call Read before accessing data.
            while (reader.Read())
            {
                listOfOrders.Add(new Order(reader[0], reader[1]));
            }

     

    //Les entités récupérées se trouvent dans la liste listOfOrders

     

            // Call Close when done reading.
            reader.Close();
        }
    }

     

     

    Cordialement


     

    mardi 30 septembre 2008 20:29
    Modérateur
  • Bonjour,

     

    Soit vous implémentez IComparable dans votre entité. Dans ce cas vous appellez la méthode Sort() sans paramètre.

    Soit vous implémentez IComparer dans une classe. Dans ce cas vous appellez la méthode Sort() avec en paramètre une instance de cette classe.

     

    Cordialement

    jeudi 2 octobre 2008 19:59
    Modérateur

Toutes les réponses

  • Bonjour,

     

    Cela ne sert à rien... Et coute énormément en performance !

    Soit votre DAL et la BLL utilise des entités, soit vous utilisez uniquement des DataSet. Dans le cas des entités, utilisez la classe DbDataReader pour remplir votre objet métier.

     

    Petite information : Vous êtes actuellement en train de réinventer la roue, si vous souhaitez faire tout ceci en 30 secondes, utilisez Linq To SQL ou Linq To Entities. Vous disposez des designers pour créer vos entités et 3 lignes de codes vous aurez executez une requête (typé en plus...).

     

    Cordialement

     

    mardi 30 septembre 2008 15:05
    Modérateur
  • Je suis en asp.net 2.0 et je n'utilise pas LINQ.

     

    Auriez vous un exemple avec la la classe DbDataReader ?

    Dals la couche UI je prefere manipuler une entité que un dataset.

     

    Merci pour votre reponse.

    mardi 30 septembre 2008 16:57
  • Bonjour,

     

    Voici un extrait du MSDN (modifié pour votre cas) :

    http://msdn.microsoft.com/fr-fr/library/system.data.sqlclient.sqldatareader(VS.80).aspx

     

    On suppose qu'il existe une entité métier (class) Order avec un constructeur Order(int, int)

     

    Code Snippet

    private static void ReadOrderData(string connectionString)
    {
        string queryString =
            "SELECT OrderID, CustomerID FROM dbo.Orders;";

        using (SqlConnection connection =
                   new SqlConnection(connectionString))
        {
            SqlCommand command =
                new SqlCommand(queryString, connection);
            connection.Open();

            SqlDataReader reader = command.ExecuteReader();

     List<Orders> listOfOrders;

            // Call Read before accessing data.
            while (reader.Read())
            {
                listOfOrders.Add(new Order(reader[0], reader[1]));
            }

     

    //Les entités récupérées se trouvent dans la liste listOfOrders

     

            // Call Close when done reading.
            reader.Close();
        }
    }

     

     

    Cordialement


     

    mardi 30 septembre 2008 20:29
    Modérateur
  •  

    Merci je regarde ca et vous tiens au courant.

     

    Ps : j'etais en train de regarder votre blog.

    mardi 30 septembre 2008 20:31
  • Cela fonctionne tres bien.

     

    J'arrive à le binder à un gridview. L'affichage se fait bien par : '<%# ((BusinessObjects.Announcement)Container.DataItem).FromDesc %>'

     

    Par contre je n'arrive pas à gerer le sorting avec cette entité ? Est ce possible ?

    mardi 30 septembre 2008 23:28
  • Bonjour,

     

    Normalement, si dans la propriété SortExpression vous avez indiqué le nom d'une propriété d'une entité, ASP .NET devrait trier automatiquement votre collection (liste, tableau,...etc) d'entités.

     

    Si cela ne répond pas à la question, pouvez détailler ce que vous faites exactement ?

     

    Cordialement

    mercredi 1 octobre 2008 05:04
    Modérateur
  • Lorsqu'il s'agit d'un dataview pour trier on faisait :

     

     

    dvAnnouncements.Sort = (string)ViewState["sortExprAnn"] + ViewState["sortDirectionAnn"];

     

    Mais comment faire avec une List<> d'objet ?

    mercredi 1 octobre 2008 07:48
  •  

    Faut que j'implement icomparable et icomparer c'est ca ?
    mercredi 1 octobre 2008 08:57
  • Bonjour,

     

    Soit vous implémentez IComparable dans votre entité. Dans ce cas vous appellez la méthode Sort() sans paramètre.

    Soit vous implémentez IComparer dans une classe. Dans ce cas vous appellez la méthode Sort() avec en paramètre une instance de cette classe.

     

    Cordialement

    jeudi 2 octobre 2008 19:59
    Modérateur
  • Merci tout fonctionne à merveille

    jeudi 9 octobre 2008 13:29