二元谓词的左侧不能是文字表达式,它必须是有效的属性或功能性谓词表达式:PropertyName
Posted
技术标签:
【中文标题】二元谓词的左侧不能是文字表达式,它必须是有效的属性或功能性谓词表达式:PropertyName【英文标题】:The left hand side of a binary predicate cannot be a literal expression, it must be a valid property or functional predicate expression: PropertyName 【发布时间】:2017-11-05 10:47:35 【问题描述】:我是微风 js 的新手。我的 spa 应用程序使用了轻量级、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】:您是否将 NamingConvention 设置为 camelCase?如果谓词的左手表达式是错误的情况,则会出现此错误消息。只需尝试将其更改为 fileContent,您就会很快知道这是否是问题所在。
【讨论】:
我正在使用 PascalCase 并且没有更改微风的设置。默认情况下,NameConvention 值为“NamingConvention.none”,表示“没有变化”。以上是关于二元谓词的左侧不能是文字表达式,它必须是有效的属性或功能性谓词表达式:PropertyName的主要内容,如果未能解决你的问题,请参考以下文章