如果这是一个简单的误解,我还没有完全理解承诺,所以道歉.
我有一个删除页面上的项目的功能,但我有一个特定的行为取决于页面的状态.Psuedo代码方式它是这样的:
Does the page have changes?
If yes - prompt to save changes first
If yes - save changes
If no - exit function
If no - continue
Prompt to confirm delete
If yes - delete item and reload data
If no - exit function
Run Code Online (Sandbox Code Playgroud)
希望这是有道理的.基本上如果有变化,必须先保存数据.然后,如果数据已保存,或者如果没有开始更改,则提示用户确认删除.问题是我正在使用durandal和微风,我似乎无法将他们正确归还的承诺链接起来.
我的功能目前看起来像这样,我知道这是错误的,但我正在努力找出解决问题的方法.
if (this.hasChanges()) {
app.showMessage('Changes must be saved before removing external accounts. Would you like to save your changes now?', 'Unsaved Changes...', ['Yes', 'No'])
.then(function (selectedOption) {
if (selectedOption === 'Yes') {
return …
Run Code Online (Sandbox Code Playgroud) 作为一名网络开发人员,我最近发现了与KnockoutJS合作的乐趣,但是当谈到使用服务器时,我几乎完全独立.我已经考虑过BreezeJS和JayData的CRUD功能和批处理操作,但我仍然不确定哪一个最适合我.
我现在专注于使用EF的ASP.NET MVC开发,但我可能稍后转向其他平台,因此我不希望局限于一个特定的框架.在这方面,JayData提供了许多BreezeJS的提供商,如OData,webSQL,IndexedDB,localStore,Facebook和YQL,这几乎是压倒性的.BreezeJS确实支持OData,但仅限于消费.
但是,我可能没有想到的易用性,文档和其他关键功能如何?
感谢您帮助我在他们之间做出选择.
getEntityList = function (predicate) {
var query = new entityModel.EntityQuery().from("EntityList");
if (predicate)
query = query.where(predicate);
return manager.executeQuery(query);
}
Run Code Online (Sandbox Code Playgroud)
但我想在返回任何可查询结果之前将其他参数传递给控制器操作:
[AcceptVerbs("GET")]
public IQueryable<Entity> EntityList(string actionParam) {
//here goes logic that depends on actionParam
//and returns IQueryable<Entity>
}
Run Code Online (Sandbox Code Playgroud)
正如我们从文档中所知:
Breeze将查询转换为OData查询字符串,例如:
?$ FILTER =的isArchived%20当量%20false&$排序依据= CreatedAt
这是问题开始的地方.我应该如何构建查询以将param传递给控制器操作?
getEntityList = function (predicate, actionParam) {
var query = new entityModel.EntityQuery().from("EntityList");
if (predicate)
query = query.where(predicate);
if(actionParam)
// ???
return manager.executeQuery(query);
}
Run Code Online (Sandbox Code Playgroud)
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{actionParam}",
defaults: new { query = RouteParameter.Optional }
); …
Run Code Online (Sandbox Code Playgroud) 我们正在尝试使用与John Papa的Pluralsight课程(例如,Web API,淘汰赛,jquery等)类似的技术和技术来开发SPA.但是,作为一家公司,我们决定不使用Entity Framework.我们想使用标准ADO.NET编写服务器端数据层.
现在,我们正试图将Breeze整合到我们的解决方案中.然而,即使Breeze网站说他们并没有与微软绑定,但是如果你不使用EF,你将会遇到与Breeze一起漫长而痛苦的旅程.
我们尝试评估NoDB Breeze示例,但是这个问题非常复杂且难以理解(并且弄清楚如何在服务器端的标准分层拱中实现它 - 一切看起来都是紧密耦合的,只是放在MVC/Web API项目的Models文件夹).
所以,我的问题是:
- 如果您不使用EF,Breeze是客户端数据库的错误选择吗?
- 如果Breeze可以很容易地在服务器端使用EF并且只使用直接的ADO.NET,那么是否有更好的示例或文档显示如何执行此操作?
- 鉴于我们的SPA实施非常类似于John Papa的SPA拱门,包括durandal,knockout,Web API等,除了(再次)我们没有使用EF,对我们来说有比Breeze更好的选择吗?
- 然后是SignalR ......我们计划稍后实施SignalR,Breeze是否可以与SignalR一起使用?
谢谢!
javascript entity-framework signalr single-page-application breeze
我遇到了这个Breeze错误
[非法建筑 - 使用'或'结合检查]
在加载实体的编辑页面时在Chrome上.刷新页面时,不再显示错误消息.此错误在我的网站上随机,不定期地发生.我无法使用指定的场景重现它,只是随机地遇到它.
我在Breeze代码中看到此错误消息
if (curContext.prevContext === null) {
curContext.prevContext = context;
// just update the prevContext but don't change the curContext.
return that;
} else if (context.prevContext === null) {
context.prevContext = that._context;
} else {
throw new Error("Illegal construction - use 'or' to combine checks");
}
Run Code Online (Sandbox Code Playgroud)
你能否告诉我:基于上面的代码块,在哪种情况下抛出这个错误?
非常感谢.
我写这篇文章是为了收集关于我们方法的评论,希望能帮助别人(和我的记忆).
DateTime
没有时区信息的数据类型.where
子句)中.想象一下Breeze控制器直接将数据库中的表作为IQueryable公开.Breeze客户端将以UTC格式将任何日期过滤器(where)子句传递给服务器.实体框架将忠实地使用这些日期来创建SQL查询,完全不知道数据库表日期在我们的本地时区.对我们而言,这意味着结果在12到13个小时之间,偏离了我们想要的结果(取决于夏令时).我们的目标是确保我们的服务器端代码(和数据库)始终在我们的本地时区中使用日期,并且所有查询都返回所需的结果.
我正在按照John Papa在其最新的PluralSight课程中概述的方法,使用Angular,Breeze和Web API 2构建SPA.
一切运作良好,我可以拉取信息,更新,插入,删除回服务器.但是我正在使用空间类型,当我尝试更新具有空间类型的实体时,我收到以下错误
Newtonsoft.Json.dll中出现"Newtonsoft.Json.JsonSerializationException"类型的异常,但未在用户代码中处理
附加信息:从'System.Data.Entity.Spatial.DbGeometry'上的'WellKnownValue'获取值时出错.
内部异常似乎指向WellKnownValue为空的事实,但它不是,因为我检查了发送到服务器的JSON,然后将其发送到Breeze ContextProvider并使用SaveChanges方法保存.
{
"entities": [
{
"TableKey": 2,
"CaseName": "Mikhail Lermontov",
"StartDate": "2013-06-11T00:00:00Z",
"EndDate": null,
"IsCurrent": true,
"SRID": 109,
"Shape": {
"$id": "2",
"$type": "System.Data.Entity.Spatial.DbGeometry, EntityFramework",
"Geometry": {
"$id": "3",
"$type": "System.Data.Entity.Spatial.DbGeometryWellKnownValue, EntityFramework",
"CoordinateSystemId": 2193,
"WellKnownText": "POLYGON ((1695943 5462665, 1713098 5462665, 1713098 5449659, 1695943 5449659, 1695943 5462665))"
}
},
"SpillLocation": "Marlborough Sounds",
"Image": "http://www.nzmaritime.co.nz/images/lm5.jpg\r\n",
"DefaultBaseMapKey": 2,
"__unmapped": {
"isPartial": false
},
"entityAspect": {
"entityTypeName": "DatSpillCase:#Osiris.Model",
"defaultResourceName": "DatSpillCases",
"entityState": "Modified",
"originalValuesMap": {
"CaseName": "Mikhail …
Run Code Online (Sandbox Code Playgroud) Ember Js和Persistence都有一个alpha版本.AngularJs是否有类似的东西(或者它在计划中)?也许有一些与框架无关的东西?
我需要的是实际的库,它可以实现以下功能:
UPDATE
我找到了这些(学分归Miroslav)
我在服务返回的数据中有一个DateTime属性,如:"SDateTime":"2014-06-29T03:30:00.000"
我需要编写一个查询来获取日期小于"2014-06-26T03:30:00.000"且大于"2014-06-23T03:30:00.000"的集合
如何为dateTime编写过滤器?
谢谢.