none
entités champs de longueur fixe RRS feed

  • Question

  • Bonjour,

     

    J'utilise un modèle edmx.

    Je souhaite réaliser un dump d'une table au format sdf.

    Je peux facilement lire les enregistrements et faire un fichier texte délimité (csv) mais je ne trouve pas comment faire un padright pour chaque champ selon sa longueur car lors du parcours des enregistrement ( for each) la proprieté field length n'est pas visible

    Y a t il une solution ?

    Merci

    Mettre longueur fixe à vrai dans le modèle ne semble pas avoir d'effet

    samedi 2 octobre 2010 16:05

Réponses

  • Bonjour,

    Voilà une petite méthode statique pour récupérer la longueur maximale d'une propriété dans Entity Framework :

    static int GetMaxLength(ObjectContext contexte, Type entitéType, string nomPropriété)
    {
      return (int)contexte.MetadataWorkspace.GetItems(DataSpace.CSpace) 
            .Where(m => m.BuiltInTypeKind == BuiltInTypeKind.EntityType)  // Récupérer les EntityType
            .Cast<EntityType>()                       // Caster...
            .Where(entité => entité.Name == entitéType.Name)        // Récupérer que l'entité de type "entitéType"
            .SelectMany(meta => meta.Properties)              // Récupérer toutes les propriétés
            .Where(p => p.Name == nomPropriété)               // Récupérer la propriété ayant comme nom nomPropriété
            .Select(p => p.TypeUsage.Facets["MaxLength"].Value).Single();  // Récupérer sa longueur maximale
    }
    

    Voilà son utilisation :

    int max;
            
    max = GetMaxLength(contexte, typeof(Personne), "Nom");
    

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS ADO .NET 3.5 - MCPD Windows Developper 3.5 - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    • Marqué comme réponse Alex Petrescu vendredi 8 octobre 2010 07:27
    dimanche 3 octobre 2010 12:15
    Modérateur

Toutes les réponses

  • Bonjour,

    Voilà une petite méthode statique pour récupérer la longueur maximale d'une propriété dans Entity Framework :

    static int GetMaxLength(ObjectContext contexte, Type entitéType, string nomPropriété)
    {
      return (int)contexte.MetadataWorkspace.GetItems(DataSpace.CSpace) 
            .Where(m => m.BuiltInTypeKind == BuiltInTypeKind.EntityType)  // Récupérer les EntityType
            .Cast<EntityType>()                       // Caster...
            .Where(entité => entité.Name == entitéType.Name)        // Récupérer que l'entité de type "entitéType"
            .SelectMany(meta => meta.Properties)              // Récupérer toutes les propriétés
            .Where(p => p.Name == nomPropriété)               // Récupérer la propriété ayant comme nom nomPropriété
            .Select(p => p.TypeUsage.Facets["MaxLength"].Value).Single();  // Récupérer sa longueur maximale
    }
    

    Voilà son utilisation :

    int max;
            
    max = GetMaxLength(contexte, typeof(Personne), "Nom");
    

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS ADO .NET 3.5 - MCPD Windows Developper 3.5 - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    • Marqué comme réponse Alex Petrescu vendredi 8 octobre 2010 07:27
    dimanche 3 octobre 2010 12:15
    Modérateur
  • Bonjour,

     

    Fturpin, est-ce que la solution de M. Tourreau vous a aidé à résoudre le problème ?

     

    Cordialement,

    Alex

    ________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

    Windows Phone 7

    Astuces pour Visual Studio 2010

    XNA – Développement jeux vidéo

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, WPF

    Café des usages

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     

     

    mardi 5 octobre 2010 10:58