Breezejs / Angular / EF - 在填充metadastore之前无法执行

时间:2015-02-27 10:45:11

标签: angularjs entity-framework breeze

我开始学习angularjs并尝试将Angularjs + Breezejs + EntityFramework放在一起。

这是我的上下文cs文件:

public class GrantsDbContext : DbContext {
    public GrantsDbContext() {
        Database.SetInitializer<GrantsDbContext>(new MigrateDatabaseToLatestVersion<GrantsDbContext, Configuration>());
    }
    public DbSet<OrgItem> OrgList;
}

OrgItem只是模型类(包含:ID,FullName,ShortName),我设置了automigrate,并在Web.config中编写默认连接字符串

这是breeze控制器cs文件:

[BreezeController]
public class DbController : ApiController {
    private EFContextProvider<GrantsDbContext> _contextProvider = new EFContextProvider<GrantsDbContext>();
    [HttpGet]
    public String Metadata() {
        return _contextProvider.Metadata();
    }
    [HttpPost]
    public SaveResult SaveChanges(JObject saveBundle) {
        return _contextProvider.SaveChanges(saveBundle);
    }
    [HttpGet]
    public IQueryable<OrgItem> OrgList() {
        return _contextProvider.Context.OrgList;
    }
}

这是角度服务,它为breeze创建了经理:

angular.module('app').factory("entityManagerFactory", ["breeze", emFactory]);

function emFactory(breeze) {

    new breeze.ValidationOptions({ validateOnAttach: false }).setAsDefault();

    var serviceName = "breeze/db";
    var metadataStore = new breeze.MetadataStore();

    var provider = {
        newManager: newManager
    };

    return provider;

    function newManager() {
        var mgr = new breeze.EntityManager({
            serviceName: serviceName,
            metadataStore: metadataStore
        });
        return mgr;
    }
}

这是我的控制器调用查询:

angular.module("app")
    .controller("OrgCtrl", ['entityManagerFactory', OrgCtrl]);

function OrgCtrl(entityManagerFactory) {
    var vm = this;
    vm.orgs = [];

    var manager = entityManagerFactory.newManager();
    var orgsQuery = new breeze.EntityQuery("OrgList").select("ID, FullName, ShortName");
    manager.executeQuery(orgsQuery).then(succesCallback).catch(failCallback);

    function succesCallback(data) {
        vm.orgs = data.result;
    }
    function failCallback(error) {
        console.log(error);
    }
}

当我第一次启动应用程序时,数据库是使用一个表'_MigrationHistory'创建的,然后我收到错误:'错误:在填充metadataStore之前无法执行_executeQueryCore。'

'localhost:49934 / breeze / db / Metadata'可用(200 OK)。 所有库都使用nuget更新。

请帮忙解决这个问题! 谢谢!

0 个答案:

没有答案