【问题标题】:Entity Framework + WCF DataServices + Extension Methods实体框架 + WCF 数据服务 + 扩展方法
【发布时间】:2013-12-02 13:37:13
【问题描述】:

我正在尝试构建一个库项目,该项目将通过一些扩展方法帮助我完成其他项目。将被扩展的类型是 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 数据服务公开上下文,它缩小了我的上下文能力,这对我来说是矛盾的,因为这里的目标是公开数据,你怎么能在没有意义的情况下公开数据呢?那么,我该如何完成这项任务,将我的扩展方法作为扩展方法暴露给我的客户端上下文操作。

编辑

我一直在阅读,并从 Ladislav Mrnka 那里找到了这个答案

Implement WCF Data Service using the Repository Pattern

【问题讨论】:

  • 你的意思是当你尝试通过你的 WCF 数据服务插入一个对象时,这个扩展方法没有被调用?
  • 正是...其他方法也没有出现

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


【解决方案1】:

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

【讨论】:

  • 我明白,但这是矛盾的,因为主要目标是将数据从服务器公开到客户端。
  • 您能想象出任何解决方法吗?我有很好的方法来使用上下文,我将不得不使用 WCF 服务而不是 WCF 数据服务。但是,我选择数据服务而不是 wcf 服务的原因之一是使用断开连接的实体图的简单方法
  • @DiegoGarciaVieira:这实际上取决于您希望在客户端拥有什么功能。 DS 上下文与 DBContext 非常相似,但有区别。如果您针对每个特定案例发布一个问题会更好,因为现在您提出的问题非常笼统。
  • 是的,我明白了。我用 Ladislav Mrnka 的回答更新了我的问题,他所说的过度工程让我和他一起……我会把你的回答标记为正确,因为你给出了整体背景。
猜你喜欢
  • 1970-01-01
  • 2011-06-13
  • 1970-01-01
  • 1970-01-01
  • 2023-03-25
  • 2013-11-25
  • 2017-03-12
  • 2017-03-24
  • 2016-07-29
相关资源
最近更新 更多