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

C# Discussion :

classe = base de données.. "databinding ?"


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 8
    Par défaut classe = base de données.. "databinding ?"
    Bonjour à tous,

    Je me lance dans le C# et je dois m'y lancer très très rapidement. ^^
    Après une brève présentation de certaines fonctionnalités du C# l'une d'elle ma parue intéressante mais m'a un peu "échappé".

    Il semblerait qu'il soit possible de créer des classes étroitement liée à la base de données, ainsi à chaque modification d'un objet de ce type, la base serait "automatiquement" modifié.

    Exemple : une table "Individu", son équivalent une classe "Individu"

    Si je créer un tableau d'Individu et que je modifie le nom de l'un d'entre eux dans mon tableau, la base est automatiquement mise à jours ou après l'appel d'une methode genre MonIndividu.Commit()

    Je ne demande pas une réponse personnalisé me donnant tous les éléments.
    Mais si l'un d'entre vous peut m'aiguiller sur une piste, un tuto, un exemple ou même juste le nom d'une méthode qui me permettrait de remonter jusqu’à l'origine de tout ça...

    Merci d'avance !

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Ce que tu cherches s'appelle Entity Framework : Introduction à Entity Framework. C'est un peu vieux (2008), mais ca te donnera déjà une idée de ce que c'est
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 8
    Par défaut
    Merci beaucoup DotNetMatt, c'est exactement ce que je cherchais.

    Je ne souhaites pas abuser de ta gentillesse mais je me permets une question supplémentaire.
    Je suis entrain de tester entity framework pour la mise en place d'un webservice rest.

    J'ai donc une table dans ma base oracle : appelons là Individu (avec un IDIndividu et un NomIndividu)
    J'ai déclaré dans mon projet : une classe Individu

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
     
    namespace WebAPI.Models
    {
        public class Individu
        {
            public double IDIndividu { get; set; }
            public string NomIndividu { get; set; }
        }
    }
    J'ai créé une classe pour mon contexte.

    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
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Data.Entity;
     
    namespace WebAPI.Models
    {
        public class WebAPIContext : DbContext
        {
            public DbSet<Individu> Individu { get; set; }
     
            public WebAPIContext() : base("Provider=MSDAORA.1;User ID=User;password=pwd;Data Source = oracle11; Persist Security Info = False")
            {
            }
        }
    }
    Je pense que jusque là c'est un début pas trop mal... ?
    Mais je "bug" un peu sur la création du controler

    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
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Net.Http;
    using System.Web.Http;
    using System.Data.OleDb;
    using WebAPI.Models;
    using System.Data.Entity;
     
    namespace WebAPI.Controllers
    {
        public class IndividuController : ApiController
        {
            List<Individu> ListeIndividu = new List<Individu>(); //Je me trompe peut être en pensant devoir passer par une liste... ?
     
            public IndividuController()
            {
            }
     
            [HttpGet]
            [Route("api/v1/Individuinfo")]
            public IEnumerable<Individu> GetAllIndividu()
            {
                return ListeIndividu;
            }
    Désolé je passe peut etre totalement a côté mais je me suis lancé dans le C# pour la première fois hier, j'ai certainement pas mal de lacune ! ^^

    Encore merci pour ton aide ou à toute personne prête a m'aider !

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Tu y es presque. Voici quelque chose qui devrait marcher (à tester car j'ai créé ce code avec notepad) :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    public class IndividuController : ApiController
    {
    	private WebAPIContext _context = new WebAPIContext();
     
    	public IndividuController()
    	{
    	}
     
    	[HttpGet]
    	[Route("api/v1/Individuinfo")]
    	public IEnumerable<Individu> GetAllIndividu()
    	{
    		return this._context.Individu.Where(...).AsEnumerable();
    	}
    }
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 8
    Par défaut Connexion à Oracle
    Encore une fois Merci DotNetMatt.

    Désolé pour cette réponse tardive mais entre le taf qui m'impose régulièrement de passer sur autre chose et le fait que j'ai essayé de m'en sortir par moi même (sans succès)...

    Je suis malheureusement toujours bloqué avec ma connexion...
    Voici le genre de message d'erreur que j'obtiens :
    Nom : imp ecran.png
Affichages : 211
Taille : 187,8 Ko

    J'ai essayé d'établir la connexion de nombreuse façons (en fonction de ce que je trouvais sur le net...):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    //public WebAPIContext() : base("ProviderName=MSDAORA;User ID=jg_rest;password=jg_rest;Data Source = oracle10; Persist Security Info = False")
    //public WebAPIContext() : base("ProviderName=MSDAORA.1;User ID=jg_rest;password=jg_rest;Data Source = oracle10; Persist Security Info = False")
    //public WebAPIContext() : base("provider=\"Oracle.ManagedDataAccess.Client\";connectionString=\"User ID=jg_rest;password=jg_rest;Data Source = oracle10\"")
    public WebAPIContext() : base("name=WebAPI.DbConnection") 
    {
    }
    Pour le dernier exemple avec le fichier App.config, le message d'erreur n'est pas tout à le même
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <Message>Une erreur s’est produite.</Message>
    <ExceptionMessage>
    Échec de la sérialisation du corps de la réponse par le type « ObjectContent`1 » pour le type de contenu « application/xml; charset=utf-8 ».
    </ExceptionMessage>
    <ExceptionType>System.InvalidOperationException</ExceptionType>
    <StackTrace/>
    <InnerException>
    <Message>Une erreur s’est produite.</Message>
    <ExceptionMessage>
    Une erreur liée au réseau ou spécifique à l'instance s'est produite lors de l'établissement d'une connexion à SQL Server. Le serveur est introuvable ou n'est pas accessible. Vérifiez que le nom de l'instance est correct et que SQL Server est configuré pour autoriser les connexions distantes. (provider: SQL Network Interfaces, error: 52 - Impossible de localiser l'installation d'un Local Database Runtime. Vérifiez que SQL Server Express est bien installé et que la fonctionnalité de runtime de base de données locale est activé.)
    Fichier App.config
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
    	<connectionStrings>
       <add name="WebAPI.DbConnection" 
       providerName="OraOLEDB.Oracle" 
       connectionString="Data Source=jg_rest/jg_rest@oracle10" />
    </connectionStrings>
    </configuration>
    Je n'ai pas défini de connexion à une base de données dans Visual studio, car le projet sera censé être, à terme, "multi base" (oracle, sqlserver ou postgres), mais peut être est-ce une erreur ?

    Merci d'avance !

  6. #6
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    La connection string pour Entity Framework est différente d'une connection string classique. Le plus simple c'est que tu crées un projet vide, un nouveau modèle et tu récupères la chaine générée automatiquement.

    Sinon, tu peux le faire manuellement, ca doit ressembler à ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    "metadata=res://*/xxxxx.csdl|"
                        + "res://*/xxxxx.ssdl|"
                        + "res://*/xxxxx.msl;"
                        + "provider=Oracle.ManagedDataAccess.Client;"
                        + "provider connection string=\""
                        + "server=0.0.0.0;user id=root;password=secret;"
                        + "persist security info=True;database=zzzzzẞ"; "
                        + "providerName=System.Data.EntityClient ";
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  7. #7
    Membre très actif
    Avatar de charouel
    Homme Profil pro
    Freelance
    Inscrit en
    Mars 2009
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 618
    Billets dans le blog
    9

Discussions similaires

  1. [MySQL] Problème des doubles quotes dans la base de données
    Par betadev dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 16/02/2012, 14h46
  2. diagramme de classes/base de données
    Par amattoallah dans le forum UML
    Réponses: 0
    Dernier message: 28/05/2010, 17h46
  3. diagramme de classe-->>base de données
    Par simosiso1 dans le forum Outils
    Réponses: 3
    Dernier message: 20/07/2009, 21h04

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