Неперехваченная ошибка: для этого запроса нет доступных метаданных

* Я разрабатываю демонстрационное приложение с использованием HotTowel SPA в VS2012. Используя ветер, я пытаюсь раскрыть модель и использовать ее для запросов к базе данных. Я использовал ссылку для этого приложения, используя эту ссылку http://www.codeproject.com/Articles/730450/Creating-Single-Page-Application-using-Hot-Towel-T

Вот часть моего кода.

// Мои занятия

public class JobDemoClass
    {
        public int Id { get; set; }
        public string JobName { get; set; }
        public string JobDescription { get; set; }      
        public DateTime StartTime { get; set; }

    }

// Мой Дбконтекст

public class JobDemoDbContext : DbContext
    {
        public DbSet<JobDemoClass> JobDemo { get; set; }

        public JobDemoDbContext()
            : base("SPAConnection")
        {

            Database.SetInitializer<JobDemoDbContext>(null);
        }
    }

//Мой контроллер

 [BreezeController]
        public class ScottController : ApiController
        {
            readonly EFContextProvider<JobDemoDbContext > _contextProvider = new EFContextProvider<JobDemoDbContext >();

            [System.Web.Http.HttpGet]
            public string Metadata()
            {

                return _contextProvider.Metadata();
            }

            [System.Web.Http.HttpPost]
            public SaveResult SaveChanges(JObject saveBundle)
            {
                return _contextProvider.SaveChanges(saveBundle);
            }

            [System.Web.Http.HttpGet]
            public IQueryable database()
            {
                return _contextProvider.Context.JobDemo;
            }

//Некоторый маршрут в Shell.js

var routes = [

                { route: '', moduleId: 'jobs', title: 'Scheduled Jobs', nav: 1 },               
                { route: 'jobadd', moduleId: 'jobadd', title: 'Add a job', nav: 2 },
                {route:'JobEdit/:id',moduleId: 'jobedit', name : 'Edit Job',  visible: false}];

Но здесь я столкнулся с проблемой при использовании

manager.ExecuteQueryLocally.from("база данных");

// база данных — это метод, определенный в контроллере

//Ошибка Неперехваченная ошибка: для этого запроса нет доступных метаданных

Эта ошибка появляется, когда я пытаюсь перейти к представлениям «jobadd» и «jobedit».

Я попытался изменить часть своего кода, но все равно показывает ту же ошибку.


person ashishraaj    schedule 13.01.2015    source источник


Ответы (1)


Когда вы ExecuteQueryLocally, breeze должен знать, какие типы сущностей он должен запрашивать. Это делается путем сопоставления строки, указанной в предложении .from, с метаданными сущности. В метаданных каждый объект имеет свойство defaultResourceName, указывающее ожидаемое имя имени ресурса сервера (имя метода в вашем контроллере веб-API), которое используется для запроса этих объектов.

Обычно defaultResourceName — это множественное число имени объекта, поэтому ваш объект JobDemo, вероятно, имеет имя ресурса по умолчанию, равное JobDemos. Попробуйте использовать

var query = breeze.EntityQuery.from('JobDemos');
var jobDemos = manager.executeQueryLocally(query);

Or:

var query = breeze.EntityQuery.from('database').toType('JobDemo');
var jobDemos = manager.executeQueryLocally(query);

Дополнительные сведения см. в документации Breeze по локальным запросам.

person Steve Schmitt    schedule 13.01.2015
comment
Спасибо, Стив, вот фрагмент кода для сопоставления с Entity, я решил вышеуказанную проблему, но все еще не могу решить ошибку, которая является объектом не является функцией в этой функции function mapToEntity(entity, dto) { for (var prop in dto) { if (dto.hasOwnProperty(prop)) { entity[prop](dto[prop]); } } вернуть сущность; } где сущность — это объект с наблюдаемыми, а dto — объект json. - person ashishraaj; 14.01.2015
comment
Почему у вас есть эта функция mapToEntity? - person Steve Schmitt; 14.01.2015