Я хочу заселити мої спадні місцями за допомогою вітру. Це показує перерахунок метаданих вітерця, але я не знайшов способу його споживання. Чи надає вітерець підтримка, поки не працюють c # enums?
Відповіді:
0 для відповіді № 1Якщо ви використовуєте стандартний сервер Breeze WebApiтоді значення перерахунку повинні зменшуватися як рядки і їх можна зберігати назад на сервері також як рядки. З цього вікна реалізація сервера Breeze WebApi за замовчуванням автоматично перетворить рядки в правильні значення перерахунку в обох напрямках.
(Примітка: це не буде працювати з сервером, що використовує поточного постачальника MS WebApi / OData, оскільки MS ще не підтримує переліків з цим провайдером - MS підтримуватиме це у своєму майбутньому версії 4.0.)
Наприклад, якщо припустити, що у вас був enum на стороні сервера, який виглядав так:
public enum RoleType {
Guest = 0,
Restricted = 1,
Standard = 2,
Admin = 3
}
спільно з класом "Role", який мав властивість "RoleType", тоді працює наступний запит:
var query = new EntityQuery("Roles").where("RoleType", "==", "Restricted");
myEntityManager.executeQuery(query).then(...);
Так само, якби ви хотіли змінити тип RoleType для заданої ролі, ви могли б
role.RoleType = "Standard"; // assuming breeze backingStore adapter.
myEntityManager.saveChanges();
0 для відповіді № 2
Якщо ви генеруєте метадані вітер в офлайнітоді ви можете отримати все визначення Enums у самих метаданих, і ви можете створити словник JS (пов'язаний масив) для заселення всіх типів enum та їх визначень.
Ну, моя ситуація полягала в тому, що я використовував NancyFx (No EF) + Breeze + AngularJS для свого веб-проекту. Я генерував метадані в режимі офлайн і зберігав їх у файлі metadata.js.
Після створення EntityManager я вилучив визначення перерахунків у словнику JS, який я згодом використовував для прив'язки спаду, відображення відповідних рядків перерахувань тощо.
Витяг Енума Визначення та зберігати в JS словнику
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;
});
Метод отримання значення enum на основі імені enum та valueid
function GetEnumDictionaryValue(enumName, enumValueId) {
var result = null;
enumDictionary[enumName].some(function (enumValue) {
if (enumValue.id == enumValueId) {
result = enumValue.name;
return;
}
});
return result;
}
Прив’язування значень до спадання Тепер для прив'язки спадних файлів просто зателефонуйте enumDictionary [] і збережіть результат у змінній контролера. Я використовував Angular JS, тому я використовував код нижче на html-сторінці
<select ng-options="type.id as type.name for type in <VariableName>"
></select>