标签: breeze

Breeze错误抛出了类型'Antlr.Runtime.NoViableAltException'的异常

指定$ filter时出错 {{api}}/Person/Get?$filter=substringof('rid', Name) eq true

错误

{
    "$id": "1",
    "$type": "System.Web.Http.HttpError, System.Web.Http",
    "Message": "An error has occurred.",
    "ExceptionMessage": "Exception has been thrown by the target of an invocation.",
    "ExceptionType": "System.Reflection.TargetInvocationException",
    "StackTrace": "   at System.Web.Http.ApiController.<InvokeActionWithExceptionFilters>d__0.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__0.MoveNext()",
    "InnerException": {
        "$id": "2",
        "$type": "System.Web.Http.HttpError, System.Web.Http",
        "Message": "An error has occurred.",
        "ExceptionMessage": "Exception of type 'Antlr.Runtime.NoViableAltException' was thrown. [.Take[BreezeWithNHiberbate.Model.Person](.OrderBy[BreezeWithNHiberbate.Model.Person,System.Int32](.Where[BreezeWithNHiberbate.Model.Person](NHibernate.Linq.NhQueryable`1[BreezeWithNHiberbate.Model.Person], Quote(($it, ) => (Equal(Equal(Or(Equal(Convert($it.Name), NULL), …
Run Code Online (Sandbox Code Playgroud)

nhibernate fluent-nhibernate asp.net-mvc-4 asp.net-web-api breeze

1
推荐指数
1
解决办法
1118
查看次数

Breeze $过滤预测

我在尝试过滤数据时遇到问题,因为breeze在URL的末尾添加了$ filter子句,而WCF\odata服务正在抛出过滤器,不能在select子句之后.

 public IQueryable<order> Orders()
{
    string owner= Membership.GetUser(Thread.CurrentPrincipal.Identity.Name).owner;

    IQueryable<Consigne> q = this.db.Consignes
        //                 .AddQueryOption("Dest", dest)
         .Where(x => x.Owner == owner)

         .Select(f => new order{ Name= f.Name, Address1 = f.Address1, Address2 = f.Address2, Address3 = f.Address3 });
    return q;
}
Run Code Online (Sandbox Code Playgroud)

我已经使用服务器端Where子句限制结果集,并使用Select投影限制字段.如果我删除这些并让微风完全控制Where\Select然后我吹我的安全模型允许js代码控制.

我意识到这不是一个真正的微风问题而是更多的odata问题,但其他人如何处理这个?你是放弃iQueryable而只是创建一个webapi并传回json?如果是这样,那么我正在重新发明轮子,因为我还需要处理skip\take和orderby.

感谢建议:)亲切的问候,迈克


解决了

我发现WCF无法在不丢失TotalCount的情况下作为iQueryable传递.WCF返回一个QueryOperationResponse,我可以将其传递给breeze,但是一旦通过微风转换为对象,我就无法在Breeze的QueryHelper.WrapResults中找到将动态类型转换回可用对象以检索扩展的TotalCount属性.

QueryHelper将执行查询

queryResult = Enumerable.ToList((dynamic)queryResult)
Run Code Online (Sandbox Code Playgroud)

request.Properties.TryGetValue("MS_InlineCount", out tmp) 
Run Code Online (Sandbox Code Playgroud)

由于错误的底层对象而失败.

我的解决方案是在我的BreezeController中执行查询,并将行和TotalCount包装在一个数组中,就像Breeze一样.然后我可以将数组作为类型QueryResult传回,breeze将序列化为JSON到客户端.

  public QueryResult Consignees(string filter, int skip, int take)
  {
    WcfService.Context context = new WcfService.Context(new System.Uri(System.Configuration.ConfigurationManager.AppSettings["URI"]));

    //Main Table
    System.Data.Services.Client.DataServiceQuery<WcfService.Consigne> qMain = context.Consignes.IncludeTotalCount();

    //Projected Table
    System.Data.Services.Client.DataServiceQuery<Consigne> qProj …
Run Code Online (Sandbox Code Playgroud)

wcf-data-services odata breeze

1
推荐指数
1
解决办法
917
查看次数

通过AMD加载Breeze

我尝试将Breeze与:TypeScript,AMD模块,requirejs,knockout一起使用.

看看Breeze代码,我可以看到它需要通过名称"ko"进行淘汰.但是,还有其他组件需要通过名称"knockout"进行淘汰.

因此,如果我使用路径"knockout"创建requirejs的配置,加载器将抱怨"ko"尚未加载.如果我手动更改Breeze代码,将"ko"替换为"knockout",一切正常.

可以做什么,所以不需要更改Breeze代码?

javascript amd requirejs knockout.js breeze

1
推荐指数
1
解决办法
132
查看次数

新项目使用WebAPI和Breeze失败

尝试按照自述文件中的说明运行新项目时收到以下错误.

1:查询Todos

2:查询失败:控制器'BreezeSample'上的动作'Todos',返回类型为'System.Collections.Generic.List`1 [[MyTasks.Api.Models.BreezeSampleTodoItem,MyTasks.Api,Version = 1.0.0.0,Culture =中性,PublicKeyToken = null]]'不能支持查询.确保返回内容的类型是IEnumerable,IQueryable或任一接口的通用形式.

更新:

我检查了我的事件查看器,并在我的机器上尝试调试时看到了我以前从未见过的SQL错误 -

用户'my-machine\user-name'登录失败.原因:无法打开显式指定的数据库.[客户:]

由于某些原因,BreezeSamplesContext生成的数据库似乎无法访问?它是由代码优先生成的,但我无法查询它(显然).

更新2:

我已将默认方法更改为 -

[HttpGet]
public IQueryable<BreezeSampleTodoItem> Todos()
{
    System.Data.Entity.DbSet<BreezeSampleTodoItem> result = null;
    try
    {
        result = _contextProvider.Context.Todos;
    }
    catch (Exception exc)
    {
        throw new Exception(exc.Message);
    }
    return result;
}
Run Code Online (Sandbox Code Playgroud)

尽管Seed方法有效,并且数据库被删除并使用种子值重新填充,但我在上面的"结果"中得到了0项的响应.

breeze

0
推荐指数
1
解决办法
861
查看次数

即使我们在客户端导入元数据,Breeze也要求从服务器获取元数据

我们通过metadataStore设置breeze元数据,我们现在使用这种方法已有好几个月了.但是前几天我们意识到即使我们使用metadataStore来设置元数据,breeze也会向服务器发出请求以获取元数据 - 它没有让这个请求返回几个版本(我不确定哪个版本,但我可以追溯) .我编写了一个T4模板以生成略微修改的元数据,但是breeze不使用它,总是从服务器加载元数据并覆盖我的.

这是我们如何设置元数据;

var core = breeze.core,
    entityModel = breeze.entityModel,
    serviceName = 'api/Service',
    metadataStore = new entityModel.MetadataStore();

metadataStore.importMetadata($.toJSON(metadata));

var createManager = function () {
    return new entityModel.EntityManager({
        serviceName: serviceName,
        metadataStore: metadataStore
    });
};
Run Code Online (Sandbox Code Playgroud)

提前致谢.

breeze

0
推荐指数
1
解决办法
855
查看次数

将HotTowel SPA部署到IIS时,不显示默认视图

我在VS 2013中使用Angular.js和HotTowel以及Breeze进行SPA项目.它在我的开发机器上工作正常但是当我在运行Windows Server 2012的Web服务器上将其部署到IIS 8.0时,它失败了.框架加载但不加载我的默认视图.它只是闪烁启动页面并显示一个空的浏览器.

我可以使用开发人员工具浏览js代码,但它从未将我的默认视图加载到index.html中.

使用IE中的开发人员工具,我在config.route.js中设置断点,以完成确定将加载到SPA中的页面的过程.它似乎正在提出正确的页面.应该加载的页面称为request.html,因此我还在request.js中放置了一个断点,以查看它是否在加载时失败.它永远不会打到这个断点.

我希望在向IIS部署SPA时,可能有人遇到过这些相同或类似的问题.

感谢您提供的任何帮助.与此同时,我会继续寻找.

JG

iis angularjs breeze visual-studio-2013

0
推荐指数
1
解决办法
2293
查看次数

如何使用从属性属性中提取的元数据添加extend breeze实体类型

我想在breeze dataService(客户端)中获取下面提到的自定义属性.

namespace Tam.Framework.Web.Models
{
    [ViewAttribute("app/views/Employee.html")]//this custom class attribute
    public class Employee : BaseEntity
    {
        protected override string OnGetDescriptor()
        {
            return "some description";
        }

        public string FirstName { get; set; }

        [Display(Name = "LAST NAME")]//this custom property attribute
        public string LastName { get; set; }
    }
}
Run Code Online (Sandbox Code Playgroud)

attributes entity-framework breeze

0
推荐指数
1
解决办法
538
查看次数