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

Windows Communication Foundation .NET Discussion :

DataMember() et DataContract()


Sujet :

Windows Communication Foundation .NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 3
    Par défaut DataMember() et DataContract()
    Bonjour à tous,

    Je suis actuellement sur une application WCF dans laquelle j'ai besoin de transferer des objets métier par WCF j'utilise donc les attributs Datacontract et Datamember sur les classes metier (générées par LINQ to SQL), je cherche un moyen d'activer ces options dans le Designer LINQ car je mets ces attributs directement dans le fichier du Designer et naturelement je perd tout lors de la regénération !

    Beaucoup de personnes sur internet disent que ces options sont disponibles dans le digner mais je ne les trouve pas, ni dans les propriétées des classes, ni dans les propriétées des champs !

    Merci d'Avance.

  2. #2
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Par défaut
    tu peux régler internal/public dans le dbml.

    tu peux mettre la serialisation a unidirectionnal mais ça ne correspond pas toujours aux besoins sinon tu copie colle les classe dans un fichier a part où tu les customise et tu vire les classes du fichier designer

  3. #3
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Au niveau du designer LINQ To SQL, tu peux jouer sur la propriété SerializationMode: tu la positionnes à Unidirectionnal et le tour est joué

  4. #4
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Par défaut
    Citation Envoyé par Thomas Lebrun Voir le message
    Au niveau du designer LINQ To SQL, tu peux jouer sur la propriété SerializationMode: tu la positionnes à Unidirectionnal et le tour est joué
    Mwé, moi je suis pas convaincu par cette technique.
    Disons qu'avec cette technique si tu a ces 2 tables :

    Address
    ======
    Content

    Person
    ======
    Name
    AddressId (FK vers Address)

    Et bien coté serveur tu aura dans la classe Address une propriété "Persons" et dans la class Person une propriété "Address".
    Mais coté client tu n'auras plus la propriété "Address" ce qui n'est franchement pas pratique.

  5. #5
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Citation Envoyé par anthyme Voir le message
    Mais coté client tu n'auras plus la propriété "Address" ce qui n'est franchement pas pratique.
    Heu, cela n'est pas normal. Coté client, lorsque tu ajoutes la références, il doit détecter que ton type Person possède une propriété de type Address et il doit donc te le proposer.....

  6. #6
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Par défaut
    Je viens de faire le test, j'ai créé un dbml représentant l'énoncé que j'ai donnée et je met unidirectionnal, et voici les classes généré (en élaguant un peu):


    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
    34
    35
    36
    37
    38
    39
    40
    	[Table(Name="")]
    	[DataContract()]
    	public partial class Person : INotifyPropertyChanging, INotifyPropertyChanged
    	{
     
     
    		[Column(Storage="_Content", CanBeNull=false)]
    		[DataMember(Order=1)]
    		public string Content
     
     
    		[Column(Storage="_AddressId", CanBeNull=false)]
    		[DataMember(Order=2)]
    		public string AddressId
     
     
    		[Column(Storage="_Id", CanBeNull=false, IsPrimaryKey=true)]
    		[DataMember(Order=3)]
    		public string Id
     
     
    		[Association(Name="Address_Person", Storage="_Address", ThisKey="AddressId", IsForeignKey=true)]
    		public Address Address
     
     
    	[Table(Name="")]
    	[DataContract()]
    	public partial class Address : INotifyPropertyChanging, INotifyPropertyChanged
    	{
     
     
     
    		[Column(Storage="_Id", CanBeNull=false, IsPrimaryKey=true)]
    		[DataMember(Order=1)]
    		public string Id
     
     
    		[Association(Name="Address_Person", Storage="_Persons", OtherKey="AddressId")]
    		[DataMember(Order=2, EmitDefaultValue=false)]
    		public EntitySet<Person> Persons
    Il n y a pas de DataMember sur la propriété "Address" mais bien sur "Persons" donc la propriété Address n'est pas serialisé et utilisable coté client.
    J'ai lu que c'était pour éviter les problèmes de serialisation cyclique (on serialise la personne puis son adresse puis la personne, etc ...)

    Après si tu as une technique pour sélectionner entre Address et Persons la propriété que je veux sérialiser dans le dbml et bien je suis tout ouïe

Discussions similaires

  1. Réponses: 0
    Dernier message: 28/01/2015, 10h28
  2. Respecter MVVM avec WCF (datacontract datamember)
    Par Kikuts dans le forum Silverlight
    Réponses: 7
    Dernier message: 06/03/2012, 17h43
  3. WCF - Problème avec les DataContract
    Par ophalia dans le forum Windows Communication Foundation
    Réponses: 3
    Dernier message: 07/10/2007, 20h03
  4. datasource, datamember et datafields
    Par new_wave dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 06/09/2006, 14h32
  5. Datagrid et datamember paramétré
    Par Paolo21 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 09/06/2006, 19h16

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