想要覆盖在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;
        }
    }

想要覆盖在WCF中为EntityType数据返回的内容

你试过使用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