3

メタデータには、entityType オブジェクトだけでなく、enumType オブジェクトもあることに気付きました。

manager.metadataStore.getEntityType() を使用してエンティティのメタデータにアクセスします。

特定の列挙型に対してどのようにそれを行うことができますか? メタデータからクライアント側で列挙型を作成するにはどうすればよいですか?

また、列挙値をプロパティに割り当てるときは、値ではなく名前で割り当てたいと思います。

たとえば、Status が myEnum 型であると仮定すると、次のようになります。

myEntity.Status = myEnum.Valid;

それ以外の

myEntity.Status = 1;

ブリーズには、列挙型の値にアクセスするためのヘルパー関数がありますか?

4

3 に答える 3

0

これはあなたの質問に対する正確な解決策ではありませんが、メタデータをオフラインで生成している人々を確実に助けることができます. Web プロジェクトに NancyFx(No EF) + Breeze + AngularJS を使用し、微風メタデータをオフラインで生成し (開発時に EF メソッドを使用)、それを js ファイルで使用しています。
また、すべての Enum 値を取得してドロップダウンをバインドし、EnumValue(Id) に対応する EnumName を表示したいという同様の状況にも遭遇しました。ネットで検索しましたが、私のシナリオではあまりありませんでした。

だから私は生の JS メソッドを書きました。

 var enumDictionary = {};

        JSON.parse(window.app.metadata).schema.enumType.forEach(function (enumType) {
            var newEnumValues = [];

            enumType.member.forEach(function (enumValue) {
                var newEnumValue = { id: enumValue.value, name: enumValue.name };
                newEnumValues.push(newEnumValue);
            });

            enumDictionary[enumType.name] = newEnumValues;
        });
  1. 特定の列挙型のすべての列挙値を取得するメソッドを作成しました。これは、ドロップダウンをバインドするために使用されます。

    function GetEnumDictionary(enumName) {
    return enumDictionary[enumName];
    } 
    
  2. 値に基づいて特定の Enum 名を取得するために作成した別のメソッド。

    function GetEnumDictionaryValue(enumName, enumValueId) {
     var result = null;
     enumDictionary[enumName].some(function (enumValue) {
     if (enumValue.id == enumValueId) {
        result = enumValue.name;
        return;
    }
    });
    
      return result;
     }
    
于 2015-05-05T11:12:43.263 に答える