我是WCF的新手。我的Web项目有一个ADO.NET实体数据模型(又名EF edmx),它具有实体容器名称JobSystemEntities
。
我创建了一个使用JobSystemEntities
的简单oData WCF数据服务,效果很好:
public class JobService : DataService<JobSystemEntities>
{
public static void InitializeService(DataServiceConfiguration config)
{
config.SetEntitySetAccessRule("Jobs", EntitySetRights.ReadSingle);
}
但是,这会公开Job上的所有属性。我想隐藏敏感数据,即Job表的Cost字段/属性/列。
答案 0 :(得分:2)
我发布这个但是迟到了,但它可能对其他人有帮助。
您可以在班级上使用IgnoreProperties属性http://msdn.microsoft.com/en-us/library/system.data.services.ignorepropertiesattribute.aspx。
您必须定义部分Job类才能执行此操作。有些东西:
namespace DAL.Entities
{
[IgnoreProperties("Cost")]
public partial class Job
{
}
}
答案 1 :(得分:0)
我做过类似的事情。这里有一个很好的起点:
基本上,您需要将实体的受保护属性分离为另一个实体,该实体作为另一个实体的属性进行链接。完成后,用户使用Query Interceptor限制何时可以查看该受保护实体。
[QueryInterceptor("YourObjectsProtectedProperties")]
public Expression<Func<YourObjectsProtectedProperties, bool>> OnReadYourObjectsProtectedProperties()
{
if (ShowEntityToUser())
return o => true == true;
return o => true == false;
}