在 jayData 中使用自定义实体的最佳实践是什么?



我有一个自定义的机制来定义JavaScript中的类,如下所示:

Tools.User = Tools.Class.define("Tools.User", Tools.Entity, {
    Id: { type: "int", key: true, computed: true },
    IsActive: { type: Boolean },
    IsAdmin: { type: Boolean },
    LName: { type: String },
    FName: { type: String },
    FullName: { get: function () { return this.FName + " " + this.LName; }, Type: String },
    init: function (name, lname) {
        this.IsAdmin = false;
        this.IsActive = true;
        this.FName = name;
        this.LName = lname;
        Tools.Entity.call(this, arguments);
    },
    onEndEdit: function () {
        if (this.IsActive == false && this.IsAdmin == true) {
            throw new Error(Messages.AdminCanNotBeDisabled);
        }
        this.parentClass.onEndEdit();
    },
    deActivate: function () {
        if (this.IsAdmin == true) {
            throw new Error(Messages.AdminCanNotBeDisabled);
        }
        this.IsActive = false;
    }
});

如您所见,它支持虚拟/覆盖、自动实现的属性、构造函数等。

我想在JayData中使用我自己的类。为此,我开发了以下几行:

$data.EntityContext.extend("Tools.AppDb", {
    Users: { type: $data.EntitySet, elementType: Tools.User }
});
var appDb = new Tools.AppDb({
    provider: 'indexedDb', databaseName: 'AppDb'
});
appDb.onReady(function () {
});

很明显,以这种方式与Jaydata合作是不可能的。但是,如何以最少的代码更改来实现这一目标呢?

我认为这个错误消息没有用,但这是一个错误消息:

Uncaught TypeError: Cannot call method 'getPublicMappedProperties' of undefined 

JayData 可以对 JayData 实体进行操作,以便跟踪更改并使独立于存储的数据管理成为可能。

因此,用户实体集的元素类型应派生自$data。实体:

$data.Entity.extend("Todo", {
    Id: { type: "int", key: true, computed: true },
    Task: { type: String, required: true, maxLength: 200 },
    DueDate: { type: Date },
    Completed: { type: Boolean }
});

相关内容

  • 没有找到相关文章

最新更新