问题标签 [breeze-sharp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 从 c# 保存对微风 web api 的更改
我想创建 ac# 应用程序,该应用程序将使用微风 Web api 使用相同的 SaveChanges(JObject saveBundle) 操作将更改集保存到服务器。如何序列化并表示要发送到服务器的变更集。我的主要问题是,当微风将变更集发送到服务器时,它是如何序列化它的。我们不能对 c# 做同样的事情,例如 JSON.NET
.net - BreezeSharp - ExecuteQuery 失败并出现 NullReferenceException
我使用 BreezeJS 已经有一段时间了,我对它有很好的经验。当我开始在 .NET 中开发移动应用程序时,我决定尝试一下 BreezeSharp。
我浏览了文档和 ToDo 示例,并成功创建了http://www.breezejs.com/breeze-sharp-documentation/get-your-feet-wet中解释的项目。
我在对我现有的 Web Api 控制器(与 BreezeJS 配合得很好)执行查询时遇到问题。
下面是查询方法:
这是来自 BeginInit() 的代码:
这是控制器方法:
我有从 BaseEntity 继承的客户端 PriceBook 类,它具有服务器 PriceBook 实体的子集。
控制器中的元数据方法被命中,但我无法命中 PriceBooks 方法。相反,我得到NullReferenceException: Object reference not set to an instance of an object。
我尝试过不使用 ODataQueryOptions 参数和使用各种版本的 EntityQuery,但没有成功。
当我尝试调用 entityManager.fetchMetadata() 时不会发生异常,但在获取 PriceBook 时会再次调用元数据方法。
有谁知道可能是什么问题?
编辑:这是问题的 StackTrace:
解决方案:我发现问题出在 enum 属性上。我在服务器上需要我在客户端省略的枚举属性:
[必需] public DataStore DataStore { get; 放; }
我通过将此属性添加到客户端来修复空引用问题。现在我在解析那个枚举时遇到了问题,但这是另一个问题。
.net - BreezeSharp - 枚举序列化失败
这个问题是BreezeSharp 的续集 - ExecuteQuery failed with NullReferenceExeption
在我的服务器端实体中,我有枚举属性:
客户端实体中的此属性定义如下:
当控制器方法向客户端返回数据时,出现序列化错误:“输入字符串格式不正确。 ”
这是堆栈跟踪:
当我从模型中排除 DataStore 属性时,一切正常。看起来 BreezeSharp 正在尝试将枚举解析为 int。
我尝试将客户端属性定义为字符串,但这会引发InconsistentCLRPropertyDefinition元数据不匹配。我还尝试像这样定义客户端属性:
公共数据存储数据存储 { 获取 { var dataStore = this.GetValue("DataStore"); 返回数据存储.DEV;} 设置 { this.SetValue(value); 但问题发生在 get 被击中之前。
我查看了 JsonEntityConverter.cs,看起来此时枚举没有单独处理:
有谁知道从这里开始?
c# - Breeze.Sharp - 需要在 DataService 的 HttpClient 构造中指定 UseDefaultCredentials
从 0.5.4 签入开始,该方法使用默认构造函数Breeze.Sharp/DataService.cs::InitializeHttpClient
创建一个。HttpClient
我的内网微风web api 服务有一个.Net 控制台应用程序,需要通过服务使用Windows 身份验证对其进行身份验证。在 pre-breeze 宇宙中,我将创建一个HttpClient
对象,该对象在构造函数中采用以下内容HttpClientHandler
,然后将用户的凭据与 http 请求一起发送:
所以这里的要求是能够将我自己HttpClient
的注入到 中DataService
,或者在我构造EntityManager
.
现在,我已经通过修改我自己的 Breeze.Sharp 库实例来解决这个问题,方法是更新DataService
构造函数以可选地接受HttpClientHandler
,如下所示:
我更愿意继续使用主库,因此希望其他人都能跟踪和解决这个问题。:)
c# - 微风.sharp 客户端未正确处理实体框架验证错误
此问题出现在 Breeze.Sharp 的 0.5.4 版本中。不确定它是否应该在 Breeze.Sharp 或 Breeze.ContextProvider.EF6 中修复,但预期行为之间似乎存在脱节。
意外行为:
我有一个包含 EF6 存储库的 .Net Web API BreezeController。
如果我通过 BeforeSaveEntities 覆盖执行对象级别验证,其中指导是通过抛出 EntityErrorsException 来使验证失败,Breeze.Sharp 客户端会按预期捕获这个并且一切都很好。
但是,如果我使用 Entity Framework ValidationAttribute 类而不是 EntityErrorsException 执行属性级别验证,则会将失败作为包含 Errors 集合的 SaveResult 返回给 Breeze.Sharp 客户端。在这种情况下,客户端会抛出异常:Unable to cast object of type 'Newtonsoft.Json.Linq.JValue' to type 'Newtonsoft.Json.Linq.JArray'。此异常发生在 Breeze.Sharp 尝试解析 SaveResult 的 KeyMappings 数组时,该数组为空。
解决方法:
现在,我没有更改我的所有验证属性以引发 EntityErrorsException,而是在我的 BreezeController 的 SaveChanges 方法中通过检查返回的 SaveResults 是否有任何错误来解决这个问题,如果发现,将这些错误包装在一个异常中,然后抛出给客户端:
xamarin - DevForce 支持 Xamarin?
我在 Ideablade 的论坛上看到了这篇文章:http ://www.ideablade.com/forum/forum_posts.asp?TID=4635&KW=xamarin&PID=17331&title=devforce-2014#17331
我觉得这个问题很有趣,但没有来自 Ideablade 的回应。
Ideablade 是否有未来 DevForce 支持 PCL 或 Xamarin 的计划?
或者 DevForce 是否可以与 Xamarin 一起使用?有样品吗?
breeze - 客户端上的实体是反模式吗?
我之前使用过 RIA 服务,现在正在测试 Breeze Sharp。
RIA 和 Breeze 给人的印象是,您在服务器/中间层看到的就是您在客户端看到的。为了支持这一点,在客户端和服务器上都使用了术语实体。它真的是一个实体,还是客户端上的一个演示模型或模型?
对于具有一层或两层实体图的较小系统,认为客户端和服务器是相同的可能没有错。对于图形深入到五个或六个级别的大型系统,需要将实体转换为 DTO 以使其变得简单。除非 UI 有一些实体的 CRUD 屏幕,否则大型应用程序最终会有更多的 DTO 和更少的实体。大多数时候,这些 DTO 将代表 UI 想要的内容,并且相当于一个演示模型。
为什么我们不能将我们在客户端处理的内容视为表示模型而不是实体?
breeze - 使用 BreezeSharp 获取访问令牌
我需要在 BreezeSharp 中使用 EntityQuery 从我的 Breeze WebAPI 获取访问令牌
我有一个名为 TokenResponseModel 的类,用于从服务器反序列化我的 json,如下所示:
我有以下代码要运行:
当我运行它时,我得到一个错误。它需要服务器上的“/Token”方法不存在的元数据。
我如何用 BreezeSharp 调用它。
使用 RestSharp 我可以这样做:
这很好用。谢谢
更多解释:我想说的是,有时我只需要从微风服务器获取结果,只是 ia JSON 格式。我不希望它映射到客户端上的任何对象。一个很好的例子是我使用 Token 方法对用户进行身份验证的案例。我知道如何自己解析 JSON。我只想微风带来以下调用的结果:
我希望能够做到这一点,因为有时我会从服务器返回在客户端或服务器上没有匹配的匿名对象。可以让我在不关心元数据的情况下做到这一点。或者我怎样才能抑制元数据获取。
谢谢你。
breeze - 与不同版本的冲突
我安装了 Breeze Sharp 客户端,但收到以下警告。
发现同一依赖程序集的不同版本之间存在冲突。在 Visual Studio 中,双击此警告(或选择它并按 Enter)以修复冲突;否则,将以下绑定重定向添加到应用程序配置文件中的“运行时”节点:
breeze - Breeze.Sharp nullable int ,当在客户端设置为零时,在 SaveChanges() 上被改回 null
我正在使用 Breeze.Sharp 的 0.5.5.0 版本,我的一个模型有一个Nullable<int>
属性。
我第一次使用 保存模型时SaveChanges()
,该值按预期为空。但是,如果我稍后尝试将值更改为 0,saveBundle
传递的微风服务仍将值显示为 null。
就在调用SaveChanges()
客户端之前,我可以确认该值为 0 并且客户端实体处于修改状态,但调用后该值立即设置回 null SaveChanges()
。
在查看saveBundle
发送到服务的 Json 时,我看到我Nullable<int>
在 originalValuesMap 中的属性设置为 null,但是属性本身未在entity
属性中列出。
在我的场景中,我正在跟踪 win32 进程历史记录,该进程执行时进程退出代码的初始值为 null,如果成功完成,则更新为 0。
我是否需要做任何特别的事情才能将 0 传递到服务器并记录下来,或者这只是 Breeze.Sharp 库中的一个错误?