Tag: wcf data services

exception消息是On数据上下文类型,有一个顶级IQueryable属性,其元素类型不是实体类型

我建立了我在IIS 7中托管的WCFDataService,我将使用Reflection Provider作为数据源提供程序。 我的示例工作,如果我将实体类型定义保持在我定义服务的同一个程序集中,但是如果我将实体类型移动到另一个引用的程序集并且出现以下错误则不起作用 “服务器遇到处理请求的错误。exception消息是’在数据上下文类型’EntityContainer’,有一个顶级IQueryable属性’Cats’,其元素类型不是实体类型” 服务 public class WcfDataService1 : DataService { public static void InitializeService(DataServiceConfiguration config) { config.SetEntitySetAccessRule(“Cats”, EntitySetRights.AllRead); config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3; } } 实体容器 public class EntityContainer { public IQueryable Cats { get { var s = new List(); var c1 = new Cat {Id = 1, Name = “Fufi”}; var c2 = […]

使用存储库模式实现WCF数据服务

我们在ASP.NET MVC 3应用程序中使用存储库模式。 这意味着,尽管我们使用EF 4.1 Code First来访问后端中的数据,但所有MVC控制器都是通过通用存储库类而不是直接通过DbContext子类来实现的。 简化的代码段: public class MyEntityContext : DbContext, IMyEntityContext { public IDbSet MyEntities { get; set; } … } public class MyEntityRepository : IMyEntityRepository { private IMyEntityContext _context; public IQueryable MyEntities { return _context.MyEntities; } … } public class MyEntityController : Controller { private MyEntityRepository _repository; … } 我们为每个依赖项使用接口和dependency injection。 […]

未找到“属性”细分的资源

使用ADO.Net Data Services客户端通过调用LoadProperty来刷新实体时: ctx.BeginLoadProperty(this, “Owner”, (IAsyncResult ar) => … 如果属性为null它会在服务器上抛出错误 错误:exception抛出:System.Data.Services.DataServiceException:找不到段’Owner’的资源。 System.Data.Services.DataService1.CompareETagAndWriteResponse上的System.Data.Services.RequestDescription.GetSingleResultFromEnumerable(SegmentInfo segmentInfo)(RequestDescription描述,ContentFormat responseFormat,IDataService dataService) System.Data.Services.Data上的System.Data.Services.DataService1.SerializeResponseBody(RequestDescription描述,IDataService dataService)处于System.Data.Services.DataService.1.HandleRequest()的System.Data.Services.DataService1.HandleNonBatchRequest(RequestDescription描述) 问题是客户端不知道属性是否为null或者尚未填充。 财产所有者是从Vehicle到Customer的链接。 有什么想法有什么不对吗? 谢谢

适用于Silverlight 4 + WCF数据服务的IAsyncRepository或IObservableRepository

更新2 :@Enigmativity有一个很好的答案。 我已将其实现为IObservableRepository 。 我的答案详情如下。 问:所以我已经改变了大部分问题(参见编辑历史)如果有人对我的设计进行了评论/validation/推测,我会喜欢它。 =) 所以通常我的Repos看起来像这样: public interface IRepository where T : class { T GetById(int id); IQueryable GetAll(); void InsertOnSubmit(T entity); void DeleteOnSubmit(T entity); int SubmitChanges(); } 但是当谈到Silverlight和WCF数据服务时,它会使所有异步的查询相关数据变得非常烦人。 我必须首先加载父实体异步,然后查询其子实体异步。 所以我提出了一个IAsyncRepository ,我想知道设计是否正常,是否可以改进,(以及在这里使用Rx是否有意义?) 要解决子实体问题,我计划在调用回调之前加载所有必需的子实体。 我的回购看起来像: public interface IAsyncRepository where T : class { void GetById(int id, Action callback); void GetAllFromQuery(Func<MyEntities, IQueryable> funcquery, Action<IList> callback) […]

使用WCF数据服务进行分页

我的问题是如何使用WCF数据服务处理分页。 我想要使​​用它的方式是执行查询(传递页面大小和当前页面),并获取该查询的结果以及页面信息,如总页数,当前页面编号和页面大小。 客户端(这是另一种将结果转换为使用JSON的移动应用程序的服务)来处理下一个/上一个按钮。 但是,在WCF数据服务上使用LINQ太有限了,它不支持我需要的LINQ表达式。 我尝试在WCF 数据服务中创建服务操作,但我只能返回IQueryable数据实体集合,因此我无法返回也包含分页信息的自定义实体。 有没有办法为WCF数据服务执行实现分页,以便在结果旁边我也可以获取分页信息? 编辑:由于WCF数据服务的限制,我切换到正常的WCF服务。 说实话,我不明白为什么有人会想要使用这些严重限制的数据服务!

在IIS上尝试我的WCF数据服务时得到“401 – 未经授权”

我开发了一个运行良好的WCF数据服务,我可以完成我想要的每个操作。 我开发了一个小型的c#客户端来测试所有function:添加,删除,修改,检索数据。 在我的visual studio服务器上一切正常,但是一旦我在IIS服务器上: 我可以添加/检索数据 我无法编辑数据 当我尝试编辑数据时,我收到此错误: System.Data.Services.Client.DataServiceRequestException未处理 消息= Une erreur s’est produite lors du traitement decetterequête。 来源= System.Data.Services.Client 堆栈跟踪: àSystem.Data.Services.Client.DataServiceContext.SaveResult.HandleBatchResponse() àSystem.Data.Services.Client.DataServiceContext.SaveResult.EndRequest() àSystem.Data.Services.Client.DataServiceContext.SaveChanges(SaveChangesOptions选项) àSystem.Data.Services.Client.DataServiceContext.SaveChanges() àWSTester.Program.ModifySomeThings(实体实体)dans D:\ Workspace \ 10067.GfK Telecontrol.TOM \ Release \ V3.1 \ WSTester \ Program.cs:ligne 90 àWSTester.Program.Main(String [] args)dans D:\ Workspace \ 10067.GfK Telecontrol.TOM \ Release \ V3.1 \ WSTester \ Program.cs:ligne […]

选择int数组中ID的实体 – WCF数据服务,LINQ

我想使用LINQ和Data Services返回一组实体,这些实体具有包含在ID列表或数组中的ID和ID。 我知道如何使用LinqToEF,但我不知道如何使用Data Services或使用OData查询约定。 我的想法是我会做类似的事情: int[] intArray = {321456, 321355, 218994, 189232}; var query = (from data in context.Entity where intArray.contains(data.ID) select data); 有没有办法使用Data Services / OData? 我知道我可能会通过服务操作破解它,但我宁愿不这样做。 干杯。

WCF数据服务5.6快速入门

我一直试图让WCF数据服务服务器工作几天。 我终于在今天退缩了,只是尝试完全按照快速启动的方式展示……没有别的……在完全新鲜的项目中。 肯定会有用。 但它没有..它的失败方式与我的其他测试相同。 我只是跟着这个例子 。 使用Visual Studio 2013 for Web Express和托管正在使用IIS Express。 我已安装WCF工具版本5.6,以便Visual Studio具有WFC数据服务5.6模板。 它的要点是 创建ASP.Net应用程序选择MVC类型,不为MVC以外的任何内容添加任何文件夹,也不添加unit testing,个人帐户认证。 为NorthWind数据库添加ADO.Net实体数据模型,在web.config中称为NorthwindEntities,导入所有表。 添加WCF数据服务5.6项,将其命名为NorthWind.svc。 将NorthWind.svc.cs支持代码更改为以下内容。 using System; using System.Collections.Generic; using System.Data.Services; using System.Data.Services.Common; using System.Linq; using System.ServiceModel.Web; using System.Web; namespace StackOverflowApp { public class NorthWindService : DataService { // This method is called only once to initialize service-wide policies. […]

Sequence不包含匹配元素 – EntityFramework

我正在使用EF 6.1.0并正在创建WCF服务。 首先,我创建了一个包含我的实体,Mappers和Context的类库,用于初始化EF。 我还创建了一个包含上下文实例的类,并具有以下代码: public IQueryable GetAll() { return context.[Entity].AsQueryable(); } 另一方面,我在同一个项目上创建了一个WCF服务,并在.svc文件中调用函数GetAll(),如下所示: public List GetList() { [iObject] repository = new [Object](new Context()); return repository.GetAll().ToList(); } 该项目正在建设中。 我甚至检查了配置,它位于正确的数据库中。 但是,应该创建的数据库和表不存在,并且返回中显示错误“Sequence contains no matching element”。 如果这个令人困惑,您可以使用Code First Entity Framework向我指出WCF服务的一些链接。

如何在WCF DataService中接受JSON?

我试图了解如何使用WCF数据服务(基于EF 4.1)来创建一个宁静的Web服务,该服务将持久化作为JSON对象传递的实体。 我已经能够创建一个方法,可以接受带有一组原始数据类型作为参数的GET请求。 我不喜欢这个解决方案,我更喜欢在http请求体中发送带有JSON对象的POST请求。 我发现我无法让框架将json序列化为一个对象,但是我可以手动完成它。 我的问题是我似乎无法读取POST请求的主体 – 正文应该是JSON有效负载。 下面是一个粗略的裂缝。 我尝试过几次不同的迭代,似乎无法从请求体中获取原始JSON。 有什么想法吗? 更好的方法吗? 我只想发布一些JSON数据并进行处理。 [WebInvoke(Method = “POST”)] public void SaveMyObj() { StreamReader r = new StreamReader(HttpContext.Current.Request.InputStream); string jsonBody = r.ReadToEnd(); // jsonBody is empty!! JavaScriptSerializer jss = new JavaScriptSerializer(); MyObj o = (MyObj)jss.Deserialize(jsonBody, typeof(MyObj)); // Now do validation, business logic, and persist my object } 我的DataService是一个扩展的entity […]