想要覆盖在WCF中为EntityType数据返回的内容
本文关键字:返回 数据 EntityType 中为 覆盖 WCF | 更新日期: 2023-09-27 18:07:49
我在模型中定义了一个名为SessionsOverview
的实体。我通过WCF服务公开它,代码如下:
public static void InitializeService(DataServiceConfiguration config)
{
// Examples:
config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);
config.SetServiceOperationAccessRule("*", ServiceOperationRights.AllRead);
config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
}
它在一个名为ModelSessionView.Designer.cs
在该代码中,它目前有一个名为SessionsOverviews
的方法返回一个。net对象。我想根据一些安全规则重写返回的内容。具体来说,我想查看我的app.config,获取一个设置,如果该设置不为真,我想隐藏这个对象中的一些数据。我可以开始更新这个文件,但这似乎不对。有没有明确的地方我应该添加这样的逻辑?
/// <summary>
/// No Metadata Documentation available.
/// </summary>
public ObjectSet<SessionsOverview> SessionsOverviews
{
get
{
if ((_SessionsOverviews == null))
{
_SessionsOverviews =
base.CreateObjectSet<SessionsOverview>("SessionsOverviews");
}
return _SessionsOverviews;
}
}
你试过使用QueryInterceptor的吗?
这些在服务类中指定,并返回一个表达式,您可以自己编写。
一个简单的例子定义如下:
[QueryInterceptor("SessionsOverviews")]
public Expression<Func<SessionsOverview, bool>> SessionsOverviewFilter()
{
var configValue = readfromconfig;
if (configValue == "something")
{
return (session) => session.thePropertyToFilteron == configValue;
}
return (session) => true;
}
你还可以指定ChangeInterceptors
详情请参阅以下文章
http://msdn.microsoft.com/en-us/library/dd744842.aspx