Tag: wcf data services

无法找到WCF数据服务类型

我正在尝试将VSCF10中托管的WCF数据服务移动到开发Web服务器。 当我将代码移动到IIS7应用程序时,我收到此错误: 无法找到类型’Aaa.Bbb.Services.ZzzEntities’,作为ServiceHost指令中的Service属性值提供,或在配置元素system.serviceModel / serviceHostingEnvironment / serviceActivations中提供。 ZzzEntities.svc ZzzEntities.svc.cs using Aaa.Bbb.Domain.Entities; using System.Data.Services; using System.Data.Services.Common; using System.ServiceModel.Web; namespace Aaa.Bbb.Services { public class ZzzEntities:DataService { public static void InitializeService(DataServiceConfiguration config) { config.UseVerboseErrors = true; config.SetEntitySetAccessRule(“*”, EntitySetRights.All); config.SetServiceOperationAccessRule(“*”, ServiceOperationRights.All); config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3; } } } 编辑 :此外, Aaa.Bbb.Services.dll已编译并在IIS7 Web应用程序的\ bin目录中。 编辑 :按照这里的说明,我在尝试创建ZzzEntities实例时收到以下错误 – System.TypeLoadException:无法从程序集’Aaa.Bbb.Services,Version = 1.0.0.0,Culture = […]

entity framework4.1两个具有相同属性名称的表

我在entity framework和SQL数据库方面遇到了一些问题。 所以我的问题是这样的:在我的数据库中有两个具有相同属性的表,它们在类型和长度上是相同的,但它们没有任何关联。 没有任何外键。 一旦我开始与数据库entity framework交互,就会吐出一个着名的错误: 错误0019:类型中的每个属性名称必须是唯一的。 属性名称已定义。 我顺便使用代码第一种方法。 这是表的类表示之一: [Table(“bo”)] public class TbPBO { [Required(AllowEmptyStrings = false, ErrorMessage = “O campo de nome nao pode ser nulo”)] [MaxLength(55, ErrorMessage = “O campo de nome nao pode ter mais que 55 caracteres”)] [Column(“nome”, TypeName = “char”, Order = 4)] public string TbBonome { get; set; […]

将.NET类库(主要定义CRUD操作)公开为服务

将现有(类)库 (主要定义CRUD操作)作为服务 ( WCF服务或WCF数据服务 )公开的最佳,有效和最快的方法是什么,以便它可以与Silverlight或Ajax一起使用。 是否有工具 (代码生成器,RAD工具)可以支持这个? 在此先感谢您的帮助和提示。

如何将Linq与实体和WCF数据服务的数据连接起来?

我有4个相关的实体如下: LocalAgencyAgencyOrganizationCustomer 换句话说, LocalAgency有一个相关的Agency等。使用Entity Framework (包含导航属性来细读这些关系)建立数据模型,并设置WCF DataService以向客户提供该数据。 在使用DataService的客户端上,我试图根据客户名称返回本地代理商的查询,但是没有找到支持的方式来制定这个简单的查询。 我尝试的第一种方法是使用Expand ,如下所示: var items = (from i in Context.LocalAgencies.Expand(“Agency”).Expand(“Organization”).Expand(“Customer”) where (String.IsNullOrEmpty(CustomerName) || i.Agency.Organization.Customer.CustomerName.Contains(CustomerName)) select i).Skip(StartIndex).Take(PageSize).ToList(); 如果“join”只有1级深度,则此方法有效,但无法获取导航属性的导航属性。 然后我尝试了如下连接: var items = (from localAgency in Context.LocalAgencies join agency in Context.Agencies on localAgency.CustomerID equals agency.CustomerID join organization in Context.Organizations on localAgency.CustomerID equals organization.CustomerID join customer in Context.Customers on localAgency.CustomerID equals […]

如何公开具有OData服务的派生类和成员的多层模型?

我正在尝试公开一个可用于OData服务的模型。 我目前采取的方法是: 1)在模型中定义一个类以公开IQueryable集合,例如: public class MyEntities { public IQueryable Customers { get { return DataManager.GetCustomers().AsQueryable(); } } public IQueryable Users { get { return DataManager.GetUsers().AsQueryable(); } } } 2)使用可查询的集合类设置WCF DataService ,例如: public class MyDataService : DataService { public static void InitializeService(DataServiceConfiguration config) { config.SetEntitySetAccessRule(“Customers”, EntitySetRights.All); config.SetEntitySetAccessRule(“Users”, EntitySetRights.All); config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2; } } 我用这种方法遇到了3个问题和/或限制: 1)我无法将任何派生类集合添加到IQueryable列表中。 2)我必须应用IgnoreProperties属性来隐藏从基类型派生的任何成员。 […]

单个表列而不是整个实体的WCF数据服务权限

请注意,赏金是询问此问题的已编辑部分。 第一部分是描述问题 我有一张桌子 Customer —– Name Address SocialSecurity Phone Etc…. 我有另一张桌子叫 Permissions —– IdOfUser Can_C_Address Can_R_Address Can_U_Address Can_D_Address Can_C_Phone Can_R_Phone Can_U_Phone Can_D_Phone Etc… 注意CRUD代表创建,读取,更新和删除 如何在服务器端确保用户查询数据库: contex.Customers.ToList(); 假装向wcf数据服务发出请求的用户无权查看社会保障。 我希望该列表返回null社会安全号码。 我怎样才能做到这一点? 将每个property / tableColumn分隔成一个不同的实体需要做很多工作。 例如,将CustomerPhone,CustomerSocial等全部作为不同的实体。 —————————————-编辑——— —————————– 我找到了一个奇怪的解决方案! 我不知道它是否安全。 这里是: 假设我有一个名为Users的实体。 用户有电话号码,社会保障,地址等。我的问题是,当有人查询数据库时,我想隐藏社会保障。 为了解决这个问题,我所做的是我创建了一个操作/方法,以同样的名称作为实体换句话说,我添加了方法: [WebGet] public IEnumerable Users() { return this.CurrentDataSource.Users.ToList().Select(x => { x.SocialSecurity = “”; return x; […]

如何在C#中针对Odata源动态添加filter到LINQ查询

我有如下查询 var query = (from x in NetworkDevices where x.Name == “blabla1” || x.Name == “blabla2” select x ); 我正在针对Odata端点运行它,因此它有效地转换为以下URL https://targetserver/endpoint.svc/NetworkDevices()?$filter=Name eq ‘blabla1’ or Name eq ‘blabla2’ 所以我想动态添加许多filter…在C#我可以继续添加到我的查询,但这不是动态的。 我想在运行时这样做。 如果我是从Javascript调用它,那么我也可以轻松地更新URL。 我的问题是在C#中如何动态地将这些filter添加到where子句中。 在普通的旧LINQ(像linq 2对象)我可以做这样的事情。 var machines = new string[] { “blabla1” , “blabla2” } ; res1.Where ( x => machines.Contains(x.Name) ).ToArray() 这会起作用,但这对Odata端点不起作用,因为我得到这样的错误。 不支持“包含”方法 所以我认为唯一的方法是动态地,编辑表达式树或其他东西来添加这些filter。 有谁知道怎么做?

C# – 设计问题建议:那么不能使用词典呢?

我需要通过Web服务返回一个Dictionary(或一些List,我只是不知道),特别是通过WCF数据服务。 看起来WCF数据服务不支持字典类型。 通过Web服务看起来像这样: – employee1, True employee2, False employee3, True 我首先尝试了一个1维数组,这似乎工作,但当然只带有3个elemetns的1维数组: [WebGet] public string[] Employees() { return new[] { “employee1”, “employee2”, “employee3” }; } 基本上,我需要一些List(?),每个都有两个参数,即EmployeeName和booleann值,IsActive。 任何建议将不胜感激。 更新:我将以下内容添加到我的Web服务中: public class Employee { public string Name{ get; set; } public bool IsActive{ get; set; } public Employee(string name, bool isActive) { Name = name; IsActive = isActive; […]

如何将对象列表发送到WCF服务?

我正在构建WCF服务,我想接受List作为我的方法之一的参数。 这是我的代码: [ServiceContract] public interface IProductService { [OperationContract] int InsertProducts(List products); } [DataContract] [KnownType(typeof(List))] public class Product { [DataMember] public int ProductId{ get; set; } [DataMember] public string ProductName{ get; set; } [DataMember] public List Products { get; set; } } 当我运行服务时,它给了我一个错误。 WCF不支持此操作,因为它使用NameSpace.Product[]

WCF Dataservice – 在返回结果之前修改对象?

我正在使用WCF数据服务,我有一些字段/属性,我想在发送回客户端之前“空白”(设置值为空字符串或null)。 例如:用户表有密码列,我不想将值传递给客户端。 这是一个示例,应用程序中还有其他此类列,出于安全/隐私原因,应排除该值。 很抱歉这样一个基本问题,我是WCF数据服务的新手,还没有找到任何有希望的线索。 我试过QueryInterceptors但没有运气。 有人能指出我正确的方向吗? 谢谢