实体框架+ WCF数据服务+扩展方法

时间:2013-12-02 13:37:14

标签: c# wcf entity-framework wcf-data-services

我正在尝试构建一个库项目,它将通过一些扩展方法帮助我完成其他项目。将扩展的类型是DbContext。这是一些例子

public bool Insert<TEntity>(this DbContext Context, TEntity entity) where TEntity : class
    {
        if (Context.Entry(entity).State == EntityState.Detached) //Entity is detached
        {
            Context.Set<TEntity>().Add(entity);
        }
        else //Entity is attached
        {
            Context.Entry(entity).State = EntityState.Added;
        }

        var str = Context.GetValidationErrors();

        if (Context.GetValidationErrors().Any()) return false;

        Context.SaveChanges();
        return true;

    }

问题出在哪里?

我通过WCF数据服务公开了上下文,它缩小了我的上下文功能,这对我来说是矛盾的,因为这里的目标是公开数据,如何在没有意义的情况下公开数据?那么,我怎样才能完成这个任务,将我的entension方法作为扩展方法暴露给我的客户端上下文操作。

修改

我一直在读周围,并从Ladislav Mrnka找到了这个答案

Implement WCF Data Service using the Repository Pattern

1 个答案:

答案 0 :(得分:1)

DbContext当您添加对数据服务的引用时,API与生成的上下文的API不同。此外,与DbContext相比,生成上下文的可能性有限。客户端上下文是构建OData查询的帮助程序,并不完美。我不认为你可以在没有重新实现的情况下移植每个扩展方法(如果可能的话)。