IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET MVC Discussion :

asp.net mvc + orm dataobject.net


Sujet :

ASP.NET MVC

  1. #1
    Membre habitu�
    Inscrit en
    Mars 2010
    Messages
    10
    D�tails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Par d�faut asp.net mvc + orm dataobject.net
    Bonjour,

    je d�bute en ASP.NET et apr�s plusieurs jours de gal�res j'ai enfin trouv� les �l�ments de bases :

    - ASP.NET MVC (je veux du contr�le sur mon code, donc le viewState d�gage)
    - Dataobject.net : excellent ORM, je retrouve ce que je faisais avec SQLAlchemy en python.

    Maintenant j'aimerais associer les 2 (qui fonctionnent bien s�par�ment) : c'est � dire cr�er un projet asp.net mvc avec databoject.net au lieu de linq to sql comme on voit sur tous les guides.

    Mais m�me en suivant la doc dataobject, j'ai �a ne fonctionne pas...

    merci.

  2. #2
    Membre Expert Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    D�tails du profil
    Informations personnelles :
    �ge : 49
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Par d�faut
    mmhhh, il faudrait pr�ciser la question je pense..

  3. #3
    Expert confirm�

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Architecte technique
    Secteur : High Tech - Produits et services t�l�com et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par d�faut
    Salut,

    Maintenant j'aimerais associer les 2 (qui fonctionnent bien s�par�ment) : c'est � dire cr�er un projet asp.net mvc avec databoject.net au lieu de linq to sql comme on voit sur tous les guides.
    est-ce que tu arrives � faire marcher DataObject tout seul ?

    La seule diff�rence entre utiliser linq to sql et un autre ORM, ce sont les deux lignes par controlleur qui r�cup�rent ou �crivent les donn�es dans la base

    Par contre, si tu as des retours sur DataObject, ca me dit

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer � la rubrique .NET ? Contactez-moi par MP.
    Vous voulez r�diger des articles pour la rubrique .NET ? Voici la proc�dure � suivre.

  4. #4
    Membre habitu�
    Inscrit en
    Mars 2010
    Messages
    10
    D�tails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Par d�faut
    S�par�ment, j'ai :
    - un projet MVC (route/contr�leur/vue...)
    - un projet dataobject.net (2 classes pour faire joujou).

    tous 2 sont fonctionnels et m'ont permis de faire des tests et de me familiariser un peu.

    linq to sql n'est pas un vrai ORM � mon sens. D�j� on dessine graphiquement ses classes (rien avoir mais bon) et �a devient vite le bordel quand on veut ajouter des m�thodes (il faut recr�er une classe fille qui h�rite..). Dataobject.net est simple et suit la philoshophie de sqlAlchemy : une classe, une table et des possibilit�s puissantes de validation des champs directement int�gr�es ([EmailConstraint], [PastConstraint]...). De plus Dataobjects se charge enti�rement de la construction de la base. J'ai qu'une ligne � changer et il me cr�er enti�rement ma base oracle, sql server, mysql...

    J'essaie donc de cr�er un projet en utilisant c'est 2 �l�ments : c'est � dire une application asp.net MVC qui utilise dataobjects au lieu de l'habituel linq to sql.

    Je bloque � ce niveau et malheureusement cet exemple (http://blog.alexyakunin.com/2009/11/aspnet-mvc-sample-nerddinner-port-for.html) n'est pas fonctionnel...

    Si quelqu'un a une piste, je suis preneur.

  5. #5
    Expert confirm�

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Architecte technique
    Secteur : High Tech - Produits et services t�l�com et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par d�faut
    Citation Envoy� par devstp Voir le message
    J'essaie donc de cr�er un projet en utilisant c'est 2 �l�ments : c'est � dire une application asp.net MVC qui utilise dataobjects au lieu de l'habituel linq to sql.

    Je bloque � ce niveau et malheureusement cet exemple (http://blog.alexyakunin.com/2009/11/...-port-for.html) n'est pas fonctionnel...

    ok, � quel endroit tu bloques, exactement ???

    a la creation du controlleur, de la vue ?
    au moment de r�-�crire les donn�es dans la base ?
    au moment de charger les donn�es ?

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer � la rubrique .NET ? Contactez-moi par MP.
    Vous voulez r�diger des articles pour la rubrique .NET ? Voici la proc�dure � suivre.

  6. #6
    Membre habitu�
    Inscrit en
    Mars 2010
    Messages
    10
    D�tails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Par d�faut
    je bloque sur le simple affichage d'une liste de personnes de ma table :
    L'extrait de ma vue index.aspx
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
         <% foreach (var agent in (IEnumerable<MvcApplication3.Models.Agent>)ViewData.Model) { %>
            <tr>     
                <td><%= Html.Encode(agent.Nom)%></td>
                <td></td>
                <td></td>
            </tr>
        <% } %>
    Mon model "Agent" :
    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
        [Serializable]
        [HierarchyRoot]
        [Index("Matricule", Unique = true)]
        [Index("Nom")]
        public class Agent : Entity {
     
            [Field, Key]
            public int Id { get; private set; }
     
            [Field]
            [NotNullConstraint]
            public int Matricule { get; set; }
     
            [Field(Length = 30)]
            [NotNullOrEmptyConstraint]
            public string Nom { get; set; }
     
            [Field(Length = 30)]
            public string Prenom { get; set; }
     
        }
    Mon contr�leur :
    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
            /**
            * GET: /Agent/
            **/
            public ActionResult Index() {
     
                var domain = SessionManager.Domain;
                using (Xtensive.Storage.Session.Open(domain)) {
                    using (var transactionScope = Transaction.Open()) {
                        using (var region = Validation.Disable()) {
     
                            // Querying the storage using regular LINQ query
                            var agents = Query.All<Agent>();
     
                            /**
                            // pour vérifier que ma requete est bonne : et effectivement, elle l'est. Donc ça ne coince pas à ce niveau
                            foreach (var agent in agents) {
                                  Response.Write("<p>" + agent.Nom + "</p>");                            
                            }
                            /**/
     
                            return View(agents);
                        }
                        transactionScope.Complete();
                    }
                }
     
            }

    L'erreur lors de l'acc�s � GET /Agent :
    Active Session is required for this operation. Use Session.Open(...) to open it.
    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.

    D�tails de l'exception: System.InvalidOperationException: Active Session is required for this operation. Use Session.Open(...) to open it.

    Erreur source:

    Ligne 14 : <th>Pr�nom</th>
    Ligne 15 : </tr>
    Ligne 16 : <% foreach (var agent in (IEnumerable<MvcApplication3.Models.Agent>)ViewData["data"]) { %>
    Ligne 17 : <tr>
    Ligne 18 : <td><%= Html.Encode(agent.Nom)%></td>
    Je dois avoir un soucis de le Session.Open(domain) mais je vois pas o� ??

  7. #7
    Expert confirm�

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Architecte technique
    Secteur : High Tech - Produits et services t�l�com et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par d�faut
    Je pencherais pour un probl�me d'�valuation diff�r�e

    essaye de faire plutot un truc du genre :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    var agents = Query.All<Agent>();
    return View(agents.ToList<Agent>());

    ...pour voir

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer � la rubrique .NET ? Contactez-moi par MP.
    Vous voulez r�diger des articles pour la rubrique .NET ? Voici la proc�dure � suivre.

  8. #8
    Membre habitu�
    Inscrit en
    Mars 2010
    Messages
    10
    D�tails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Par d�faut
    Donc avec :
    model
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
         <% foreach (var agent in ViewData.Model) { %>
            <tr>     
                <td><%= Html.Encode(agent.Nom)%></td>
                <td></td>
                <td></td>
            </tr>
        <% } %>
    controler
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
                            var agents = Query.All<Agent>();
                            return View(agents.ToList<Agent>());
    J'ai cette erreur :
    Op�ration non valide. La connexion est ferm�e.
    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.

    D�tails de l'exception: System.InvalidOperationException: Op�ration non valide. La connexion est ferm�e.

    Erreur source:

    Ligne 16 : <% foreach (var agent in ViewData.Model) { %>
    Ligne 17 : <tr>
    Ligne 18 : <td><%= Html.Encode(agent.Nom)%></td>
    Ligne 19 : <td></td>
    Ligne 20 : <td></td>

  9. #9
    Expert confirm�

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Architecte technique
    Secteur : High Tech - Produits et services t�l�com et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par d�faut
    ok, on va aller plus loin, alors...

    Est-ce que la propri�t� Nom est lazy-loaded ? Si oui, elle � besoin d'une connection ouverte, sinon, elle ne pourra pas aller r�cup�rer les donn�es dans la base

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer � la rubrique .NET ? Contactez-moi par MP.
    Vous voulez r�diger des articles pour la rubrique .NET ? Voici la proc�dure � suivre.

  10. #10
    Membre habitu�
    Inscrit en
    Mars 2010
    Messages
    10
    D�tails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Par d�faut
    je me mets � l'ASP.NET depuis quelques jours mais j'arrive pas � mettre la main sur un exemple simple dataobjects+mvc. M�me en reprenant les exemples plus complexes qui mettent en place des "repository" j'ai des erreurs.

  11. #11
    Expert confirm�

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Architecte technique
    Secteur : High Tech - Produits et services t�l�com et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par d�faut
    je me mets � l'ASP.NET depuis quelques jours mais j'arrive pas � mettre la main sur un exemple simple dataobjects+mvc.
    Malheureusement, je crains que les seuls � m�me de t'aider vont �tre les gens du support de DataObject, parce que le probl�me, vu les messages d'erreur, me semblent plus li�s � dataobject qu'a mvc

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer � la rubrique .NET ? Contactez-moi par MP.
    Vous voulez r�diger des articles pour la rubrique .NET ? Voici la proc�dure � suivre.

  12. #12
    Membre habitu�
    Inscrit en
    Mars 2010
    Messages
    10
    D�tails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Par d�faut
    hum, j'ai effectivement une association sur un champs de ma table Agent, pas sur le Nom mais sur le Service. Je te remets mes mod�les au complet

    model : Agent
    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
    28
    29
    30
    31
    32
    33
        [Serializable]
        [HierarchyRoot]
        [Index("Matricule", Unique = true)]
        [Index("Nom")]
        public class Agent : Entity {
     
            [Field, Key]
            public int Id { get; private set; }
     
            [Field]
            [NotNullConstraint]
            public int Matricule { get; set; }
     
            [Field(Length = 30)]
            [NotNullOrEmptyConstraint]
            public string Nom { get; set; }
     
            [Field(Length = 30)]
            public string Prenom { get; set; }
     
            [Field]
            [PastConstraint]
            public DateTime BirthDay { get; set; }
     
            [Field]
            [EmailConstraint]
            public string Email { get; set; }
     
            [Field]
            [Association(OnOwnerRemove = OnRemoveAction.Clear)]
            public ServiceInterne ServiceInterne{ get; set; }
     
        }
    model ServiceInterne
    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
        [Serializable]
        [HierarchyRoot]
        [Index("Nom", Unique = true)]
        public class ServiceInterne : Entity {
     
            [Field, Key]
            public int Id { get; private set; }
     
            [Field(Length = 100)]
            [NotNullOrEmptyConstraint]
            public string Nom { get; set; }
     
            [Field]
            [Association(PairTo = "ServiceInterne", OnOwnerRemove = OnRemoveAction.Cascade)]
            public EntitySet<Agent> Agents { get; private set; }
     
        }
    J'ai une liaison 1:N entre agent et service. Ce m'�tonne c'est que la requ�te Query.All() fonctionnait bien sur le projet ou je n'utilisais que DataObject tout seul.

    Voici l'erreur compl�te (avec mon Active Session du d�part) :
    Active Session is required for this operation. Use Session.Open(...) to open it.
    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.

    D�tails de l'exception: System.InvalidOperationException: Active Session is required for this operation. Use Session.Open(...) to open it.

    Erreur source:

    Ligne 14 : <th>Pr�nom</th>
    Ligne 15 : </tr>
    Ligne 16 : <% foreach (var agent in (IEnumerable<MvcApplication3.Models.Agent>)ViewData["data"]) { %>
    Ligne 17 : <tr>
    Ligne 18 : <td><%= Html.Encode(agent.Nom)%></td>


    Fichier source : c:\www\MvcApplication3\MvcApplication3\Views\Agent\Index.aspx Ligne : 16

    Trace de la pile:

    [InvalidOperationException: Active Session is required for this operation. Use Session.Open(...) to open it.]
    Xtensive.Storage.Session.Demand() +54
    Xtensive.Storage.Linq.Queryable`1.GetEnumerator() +12
    ASP.views_agent_index_aspx.__RenderContent2(HtmlTextWriter __w, Control parameterContainer) in c:\www\MvcApplication3\MvcApplication3\Views\Agent\Index.aspx:16
    System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +256
    System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +19
    System.Web.UI.Control.Render(HtmlTextWriter writer) +10
    System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +27
    System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +99
    System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
    ASP.views_shared_site_master.__Render__control1(HtmlTextWriter __w, Control parameterContainer) +327
    System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +256
    System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +19
    System.Web.UI.Control.Render(HtmlTextWriter writer) +10
    System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +27
    System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +99
    System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
    System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +134
    System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +19
    System.Web.UI.Page.Render(HtmlTextWriter writer) +29
    System.Web.Mvc.ViewPage.Render(HtmlTextWriter writer) +59
    System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +27
    System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +99
    System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1266

  13. #13
    Membre habitu�
    Inscrit en
    Mars 2010
    Messages
    10
    D�tails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Par d�faut
    it works !!

    J'ai repris le projet d'exemple qu'il y avait dans DataObjects/sandbox/AspnetMvcSample (nerdDinner) et j'ai r�ussi � le faire marcher. Parti de la j'ai vir� tout le superflu. En comparant les fichiers je me suis aper�u qu'il me manquait :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    <add name="SessionManager" type="Xtensive.Storage.Web.SessionManager, Xtensive.Storage, Version=1.0.0.0, Culture=neutral, PublicKeyToken=93a6c53d77a5296c"/>
    dans mon Web.config. Alors grave docteur ? j'en sais foutrement rien (je d�bute en asp.net, j'ai pas encore eu le temps de manger toute la doc du web.config) toujours est il que �a a march� aussit�t (plus d'erreur open session).

    Merci � Philippe Vialatte pour le temps pass� � m'aider !!

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Sortie de Microsoft ASP.NET MVC Beta
    Par J�r�me Lambert dans le forum G�n�ral Dotnet
    R�ponses: 17
    Dernier message: 06/11/2008, 23h12
  2. [ASP.NET MVC] C'est quoi ?
    Par DranDane dans le forum ASP.NET
    R�ponses: 2
    Dernier message: 05/09/2008, 11h48
  3. ASP.NET MVC Preview 4
    Par hollywood dans le forum G�n�ral Dotnet
    R�ponses: 0
    Dernier message: 22/07/2008, 11h57
  4. Framework ASP.NET MVC
    Par superbobo dans le forum G�n�ral Dotnet
    R�ponses: 5
    Dernier message: 02/07/2008, 16h11
  5. ASP.NET MVC Preview 2
    Par cereal59 dans le forum ASP.NET
    R�ponses: 1
    Dernier message: 04/04/2008, 16h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo