Tag: odata

使用OData Wep Api在数据传输对象上嵌套filter

我有一个wep api项目使用odata消耗数据但是我遇到了odata wep api的一些问题。 当我执行该查询时 / api / values?$ top = 50&$ filter = Comments / Fortuneteller / FullName eq’some string’ 它给了我以下错误 “消息”:“URI中指定的查询无效。”,“ExceptionMessage”:“属性’Fortuneteller’的属性访问的父值不是单个值。属性访问只能应用于单个值。” 我不想从控制器返回实体对象。 有没有办法通过DTO过滤实体? 我在我的项目中使用Repository + Service层模式,我的项目结构就是这样 api controller service repository EF api控制器 [Queryable] public IQueryable Get() { return service.FiterBy((_ => true)); } 服务 public IQueryable FiterBy(Expression<Func> filter) { return repository.List().Where(filter).Select(_ => new FortuneDTO […]

OData错误:URI中指定的查询无效。 该属性不能在查询选项中使用

我正试图让OData端点启动并正常工作,我遇到了这个错误,即使谷歌也没什么可说的。 我已经创建了一个Entity Framework EDMX上下文(数据库优先),让设计者从中生成2个模型。 一切都运行正常,除了$filter查询失败。 我可以做得很好: http://localhost:27164/Projects(6587660) 它检索主ID为6587660的项目。 但是任何$filter请求都是这样的: http://localhost:27164/Projects?$filter=ProjectID eq 6587660 将失败并出现以下错误: URI中指定的查询无效。 属性“ProjectID”不能在$ filter查询选项中使用。 我也尝试过查询其他属性,字符串属性。 同样的错误。 我已经检查过EF生成的模型在属性上没有任何属性,但它们没有。 这是我在WebApiConfig.cs模块中的Register方法: using System.Web.OData.Builder; using System.Web.OData.Extensions; public static void Register(HttpConfiguration config) { // Web API configuration and services // Configure Web API to use only bearer token authentication. config.SuppressDefaultHostAuthentication(); config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType)); ODataModelBuilder builder = new ODataConventionModelBuilder(); builder.EntitySet(“Projects”); […]

如何将OData查询与DTO映射到另一个实体?

我的问题与此问题非常相似: 如何将针对DTO的OData查询映射到EF实体? 我有一个简单的设置来测试ASP.NET Web API OData V4 $filterfunction。 我想做的是“别名”ProductDTO的一些属性以匹配Product实体的属性。 用户将使用以下请求调用ProductsController: GET产品?$ filter = DisplayName eq’test’ 产品类: public class Product { public int Id { get; set; } public string Name { get; set; } public int Level { get; set; } public Product() { } } ProductDTO类: public class ProductDTO { public int Id { […]

用Xamarin表格解析数据

我想获取集合href(CustomerDemographics,Customers,Employees,Order Details)中的名称来填充listview。 我想知道如何在Xamarin平台或C#中解析这些信息。 我对这个环境很陌生。 我有经验如何用目标c解析本机ios中的json数据,但这是我第一次看到这种类型的数据。

WCF DataService(OData)和CORS

我正在尝试使用跨域请求的WCF DataService。 我发现这有关如何使用CORS的WCF服务: http : //blogs.microsoft.co.il/blogs/idof/archive/2011/07/02/cross-origin-resource-sharing-cors-and -wcf.aspx 我下载了示例,但无法使用DataService。 它适用于示例服务,但不适用于我的DataService。 这是我非常简单的WCF DataService: public class TestService : DataService { public static void InitializeService(DataServiceConfiguration config) { config.UseVerboseErrors = true; config.SetEntitySetAccessRule(“Items”, EntitySetRights.All); config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3; } } TestService.svc文件: DataContext也很简单: public class DataContext : DbContext { public DbSet Items { get; set; } } 但是,预检选项请求返回的是501.我是否缺少让CORS与Dataservice一起工作?

$ select和$ expand break ODataQueryOptions – 如何修复?

我们将Microsoft ASP.NET MVC OData WebAPI用于我们的Web服务。 由于围绕层次结构ID的某些数据架构问题(这些问题超出了此对话的范围),我们的一些GET操作必须使用ODataQueryOptions并手动操作表达式以添加其他限制。 我们这样做(删除error handling代码并调用内联的其他方法) public IQueryable Get(ODataQueryOptions oDataQueryOptions) { IQueryable result; IQueryable dataSet = context.Persons; var tempQuery = oDataQueryOptions.ApplyTo(dataSet).Cast(); var modifier = new HierarchyNodeExpressionVisitor(GetDescendantsOfNode, GetAncestorsOfNode); var expression = modifier.ModifyHierarchyNodeExpression(tempQuery.Expression); result = context.Persons.Provider.CreateQuery(expression); return result; } 这已经有一段时间了,但是我们一直在急切地等待选择和扩展,以便我们能够更好地控制从服务中获得的数据。 星期一我们将我们的开发环境更新为WebApi OData 5.0.0-rc1并进行了select-and-expand工作,但我们不能将它用于使用ODataQueryOptions的这些服务。 我们只能用它来对付我们的其他服务。 如果我们使用$select和/或$expand查询上面的代码,我们会收到以下错误: “message”: “The ‘ObjectContent`1’ type failed to serialize the response body […]

Azure移动服务C#不会返回子实体

我真的用新的基于C#的Azure移动服务打砖墙了,它也非常简单:(我不能为我的生活得到查询操作来返回子属性值。我有todo项目的默认项目修改如下: public class TodoItem : EntityData { public TodoItem() { this.Numbers = new Collection(new List { new TodoItemNumbers{Value = 1}, new TodoItemNumbers{Value = 2}, new TodoItemNumbers{Value = 3}, new TodoItemNumbers{Value = 4}, new TodoItemNumbers{Value = 5}, }); } public virtual ICollection Numbers { get; set; } public string Text { get; set; } public bool […]

您将如何在WCF数据服务中实现API密钥?

有没有办法要求URL中的API密钥/或其他一些传递服务私钥的方式来授予对数据的访问权限? 我现在有这个…… using System; using System.Data.Services; using System.Data.Services.Common; using System.Collections.Generic; using System.Linq; using System.ServiceModel.Web; using Numina.Framework; using System.Web; using System.Configuration; [System.ServiceModel.ServiceBehavior(IncludeExceptionDetailInFaults = true)] public class odata : DataService { public static void InitializeService(DataServiceConfiguration config) { config.SetEntitySetAccessRule(“*”, EntitySetRights.AllRead); //config.SetServiceOperationAccessRule(“*”, ServiceOperationRights.All); config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2; } protected override void OnStartProcessingRequest(ProcessRequestArgs args) { HttpRequest Request = HttpContext.Current.Request; if(Request[“apikey”] != […]

ASP.NET WebApi OData对DTO的支持

我有Project实体和ProjectDTO。 我正在尝试创建一个WebAPI控制器方法,可以获取并返回ProjectDTO并使其支持OData。 问题是我正在使用可以使用Project实体而不是Project DTO查询数据库的ORM。 有没有办法可以根据ProjectDTO从OData应用过滤/排序/分页到Project实体查询? public ODataQueryResult GetProjects(ODataQueryOptions query) { var context = new ORM_Context(); var projects = context.Projects; // IQueryable var projectDtos = query.ApplyTo(projectDTOs)); // new ProjectDTO { Id = x.Id, Name = x.Name }); var projectsQueriedList = projectDtos.ToList(); var result = new ODataQueryResult(projectsQueriedList, totalCount); return result; }

从c#中的WebApi OData(EF)响应中排除属性

我正在使用C#的WebApi项目(EF代码优先),我正在使用OData。 我有一个“用户”模型,包含Id,Name,LastName,Email和Password。 在控制器例如我有这个代码: // GET: odata/Users [EnableQuery] public IQueryable GetUsers() { return db.Users; } 如果我调用/ odata / Users,我将获得所有数据:Id,Name,LastName,Email和Password。 如何从结果中排除密码,但在控制器中保持可用以进行Linq查询?