二元谓词的左侧不能是文字表达式,它必须是有效属性或函数谓词表达式:PropertyName

时间:2017-06-04 15:37:40

标签: knockout.js breeze

我是breeze js的新手。我的spa应用程序正在使用breeze,Knockout,EF和MVC框架。

我的POCO实体定义是

public partial class Tbl_GLB_Library
    {
        System.Guid ID { get; set; }
        public string FileName { get; set; }
        public string Extension { get; set; }
        public Nullable<long> Size { get; set; }
        public string Description { get; set; }
        public Nullable<System.DateTime> CreationTime { get; set; }
        public Nullable<System.DateTime> LastWriteTime { get; set; }
        public Nullable<System.DateTime> LastAccessTime { get; set; }
        public byte[] FileData { get; set; }
        public string FilePath { get; set; }
        public byte[] RowVersion { get; set; }
}

在客户端,我使用自定义构造函数添加未映射的属性:

function addTbl_GLB_LibrariesProperties() {
        var metadataStore = Manager.metadataStore;
        metadataStore.registerEntityTypeCtor('Tbl_GLB_Library', null, Tbl_GLB_LibraryInit);

        function Tbl_GLB_LibraryInit(Library) {
            Library.FileContent = ko.observable();
        }
    }

在获取元数据和一些数据之后,我需要查询缓存的数据。

 query = breeze.EntityQuery.from("Tbl_GLB_Library").where(breeze.Predicate.create('FileContent', breeze.FilterQueryOp.Equals, null));

return Manager.executeQueryLocally(query);

此方案适用于所有映射属性,但对于FileContent(未映射的属性),抛出了异常!我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您是否将NamingConvention设置为camelCase?如果谓词的左手表达是错误的情况,则会出现此错误消息。只需尝试将其更改为fileContent,您就会很快知道这是不是问题。