[英]Breeze.js - getting error trying to use “any” operator - error: Unable to get value of the property 'isAnonymous': object is null or undefined
I am trying to use the "any" operator in Breeze to query a many table and I am getting the following error - TypeError: Unable to get value of the property 'isAnonymous': object is null or undefined 我试图在Breeze中使用“ any”运算符查询多个表,但出现以下错误-TypeError:无法获取属性'isAnonymous'的值:对象为null或未定义
The only stackoverflow question I can find that seems related is this one, but there is no solution to the isAnonymous issue because the poster did not provide more code: 我可以发现的唯一与此相关的stackoverflow问题是这个问题,但是没有对isAnonymous问题的解决方案,因为发布者未提供更多代码:
breeze projection : error selecting non scalar navigation properties 微风投影:选择非标量导航属性时出错
I am using Breeze 1.4.11 with Entity Framework 5 我在实体框架5中使用Breeze 1.4.11
The query I am trying to run is 我正在尝试运行的查询是
var getEntities = function (entitiesObservable) {
var whereClause = "";
whereClause = Predicate.create("t_entity_nm", "any", "frst_nm", "startsWith", "Frank");
var query = EntityQuery.from("Entities")
.where(whereClause)
.expand("t_entity_nm");
$('#loading-indicator').show();
return manager.executeQuery(query)
.then(querySucceeded)
.fail(queryFailed);
function querySucceeded(data) {
$('#loading-indicator').hide();
if (entitiesObservable) {
entitiesObservable(data.results);
}
log("Retrieved [Entities] from remote data source", data, true);
}
};
t_entity
joins to t_entity_nm
on entity_sys_key_id
...they are views...here are the view definitions t_entity
加入到t_entity_nm
上entity_sys_key_id
......他们的观点......这里的视图定义
CREATE VIEW [dbo].[t_entity]
( [entity_sys_key_id]
, [pers_flag]
, [dob_dt]
, [birth_plc]
, [sin]
, [hsn]
, [drv_lcnc_num]
, [ap_vndr_num]
, [ar_cstmr_num]
, [sec_grp_sys_key_id]
, [actv_flag]
, [log_eff_dt]
, [log_can_dt]
, [log_upd_by]
, [sys_del_flag]
, [sys_ts]
)
AS
SELECT
[entity_sys_key_id]
, [pers_flag]
, [dob_dt]
, [birth_plc]
, [sin]
, [hsn]
, [drv_lcnc_num]
, [ap_vndr_num]
, [ar_cstmr_num]
, [sec_grp_sys_key_id]
, [actv_flag]
, [log_eff_dt]
, [log_can_dt]
, [log_upd_by]
, [sys_del_flag]
, [sys_ts]
FROM [CMN_DEV].[dbo].[t_entity]
CREATE VIEW [dbo].[t_entity_nm]
(
[entity_nm_sys_key_id]
, [entity_sys_key_id]
, [entity_nm_typ_cd]
, [saltn_cd]
, [frst_nm]
, [mid_nm]
, [last_nm]
, [firm_nm]
, [nysiis_key]
, [prmy_flag]
, [sec_grp_sys_key_id]
, [log_eff_dt]
, [log_can_dt]
, [log_upd_by]
, [sys_del_flag]
, [sys_ts]
)
AS
SELECT
[entity_nm_sys_key_id]
, [entity_sys_key_id]
, [entity_nm_typ_cd]
, [saltn_cd]
, [frst_nm]
, [mid_nm]
, [last_nm]
, [firm_nm]
, [nysiis_key]
, [prmy_flag]
, [sec_grp_sys_key_id]
, [log_eff_dt]
, [log_can_dt]
, [log_upd_by]
, [sys_del_flag]
, [sys_ts]
FROM [CMN_DEV].[dbo].[t_entity_nm]
The Breeze Controller looks like this: 微风控制器看起来像这样:
namespace MarketingPromotions.Controllers
{
[BreezeController(MaxAnyAllExpressionDepth = 2)]
public class BreezeController : ApiController
{
readonly EFContextProvider<OASIS_DEVEntities> _contextProvider =
new EFContextProvider<OASIS_DEVEntities>();
[HttpGet]
public string Metadata()
{
return _contextProvider.Metadata();
}
#endregion
[HttpGet]
public IQueryable<t_entity> Entities()
{
return _contextProvider.Context.t_entity;
}
[HttpGet]
public IQueryable<t_entity_nm> EntityNames()
{
return _contextProvider.Context.t_entity_nm;
}
}
The code where it is breaking is in breeze.debug.js on the line -> 它打破的代码在网上的breeze.debug.js中->
if (entityType.isAnonymous) return;
where "this" is the frst_nm field in the following code snippet from breeze.debug.js: 其中“ this”是来自breeze.debug.js的以下代码片段中的frst_nm字段:
proto._validate = function(entityType) {
// will throw if not found;
if (this.isValidated) return;
this.isValidated = true;
if (this.propertyPath) {
if (entityType.isAnonymous) return;
var prop = entityType.getProperty(this.propertyPath, true);
if (!prop) {
var msg = __formatString("Unable to resolve propertyPath. EntityType: '%1' PropertyPath: '%2'", entityType.name, this.propertyPath);
throw new Error(msg);
}
if (prop.isDataProperty) {
this.dataType = prop.dataType;
} else {
this.dataType = prop.entityType;
}
} else if (this.fnNodes) {
this.fnNodes.forEach(function(node) {
node._validate(entityType);
});
}
};
This looks like a resource name issue. 这看起来像资源名称问题。 My guess is that you have not established a resource name/entity type mapping. 我的猜测是您尚未建立资源名称/实体类型映射。
Take a look at these links: 看一下这些链接:
http://www.breezejs.com/documentation/query-result-debugging http://www.breezejs.com/documentation/query-result-debugging
http://www.breezejs.com/sites/all/apidocs/classes/MetadataStore.html#method_setEntityTypeForResourceName http://www.breezejs.com/sites/all/apidocs/classes/MetadataStore.html#method_setEntityTypeForResourceName
and this one: http://www.breezejs.com/documentation/querying-locally under the subtopic: Resources names are not EntityType names 子主题: http : //www.breezejs.com/documentation/querying-locally ,子主题下: 资源名称不是EntityType名称
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.