Question

Je suis absolument aimant Breizejs et j'étais tellement surpris de voir que mes valeurs d'énumissements étaient affichées comme des valeurs de texte et non de leurs ordinales!Ce que j'aimerais aimer faire est, du côté du client, ouvrez le métadatasertore, récupérer l'énumération et modifier ses propriétés textuelles à des fins d'affichage.

est-ce actuellement possible?De mes recherches, cela ne semblerait pas, mais je me demande s'il y a peut-être une solution de contournement simple.Tout ce que j'ai essayé a impliqué un grand nombre de hacks et d'attributs côté serveur, mais en vain, ni la solution qui semblait trop complexe et ne vaut pas la peine d'avantages.

Était-ce utile?

La solution

Voici ce que j'ai dit sur la façon d'obtenir les valeurs d'enum des métadonnées brutes dans Un autre commentaire .

Les valeurs ENUM sont disponibles dans les métadonnées générées par EF et envoyées à un client Breeze.Je suis d'accord avec Breeze devrait les chercher automatiquement et les mettre quelque part pour que vous ne puissiez pas faire une demande séparée pour eux ou les extraire des métadonnées brutes transmises au niveau du succès du métadatastore.fetchmetata.C'est sur notre arriéré.

Entre-temps, vous devrez les obtenir à la main.Il y a un test de doccode qui montre comment:

/*********************************************************
* Can can get enum types from raw EF-generated metadata
* Related to feature request #2271: Extract enum values from server metadata
*************************************************************/
asyncTest("can get enum type from raw EF-generated metadata", function() {

    var serviceName = testFns.foosMetadataServiceName;
    var store = new breeze.MetadataStore();
    store.fetchMetadata(serviceName)
        .then(metaSuccess, metaFail).fail(handleFail).fin(start);

    function metaSuccess(rawMetadata) {
        ok(true, "foos metadata fetched");
        var enumType = rawMetadata.schema && rawMetadata.schema.enumType;
        if (enumType && enumType.name ==='Color') {
            var members = enumType.member;
            ok(members.length,
                "should have several members; members are: " + JSON.stringify(members));
        } else {
            ok(false, "metadata should have had one enumType, 'Color'.");
        }
    }

    function metaFail(error) {
        ok(false, "foos metadata fetch failed: " + error.message);
    }

});

Autres conseils

Nous utilisons Breeze avec NHibernate et WAND pour faire de même.Les métadonnées générées pour NHibernate sont des métadonnées standard Breeze et ne contiennent pas la partie de schéma.Des idées comment le faire?

Edit: Pour résoudre notre problème, j'ai ajouté une liste de tous les énumérums utilisés dans les métadonnées (comme le nœud StructuralTypes).Ensuite, nous le cache sur le client lorsque les métadonnées sont récupérées. https://github.com/lnu/breeze.server.net/commit/65ad687AD13C4DD9F4A6AB6A3ED09E4AB6A3ED09E4AB6A3ED09E4AAB6A3ED09E4AAB6A3ED09E

merci

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top