Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从web和win form应用程序中的WCF服务访问实体框架数据时出错? 我在大Web应用程序的中间,我使用实体框架作为我的数据服务,现在我们需要一些Windows应用程序来处理我们的数据,所以我想给他们提供WCF 的服务。_C#_Wcf_Entity Framework - Fatal编程技术网

C# 从web和win form应用程序中的WCF服务访问实体框架数据时出错? 我在大Web应用程序的中间,我使用实体框架作为我的数据服务,现在我们需要一些Windows应用程序来处理我们的数据,所以我想给他们提供WCF 的服务。

C# 从web和win form应用程序中的WCF服务访问实体框架数据时出错? 我在大Web应用程序的中间,我使用实体框架作为我的数据服务,现在我们需要一些Windows应用程序来处理我们的数据,所以我想给他们提供WCF 的服务。,c#,wcf,entity-framework,C#,Wcf,Entity Framework,但当我的客户机想要获得服务时,我的公共属性(用于缓存实体模型)出现了一些错误 public partial class DepositEntities : ObjectContext { public static DepositEntities Current { get { DepositEntities oc = Http

但当我的客户机想要获得服务时,我的公共属性(用于缓存实体模型)出现了一些错误

    public partial class DepositEntities : ObjectContext
    {
        public static DepositEntities Current
        {
            get
            {
                DepositEntities oc = 
                    HttpContext.Current.Items["ObjectContext"] as DepositEntities;

                if (oc == null)
                {
                    oc = new DepositEntities();
                    HttpContext.Current.Items["ObjectContext"] = oc;
                }

                return oc;
            }
        }
    }
我知道问题出在这一行,在我调试代码之后

DepositEntities oc = System.Web.HttpContext.Current.Items["ObjectContext"] as DepositEntities;
当我将我的
当前
属性体更改为以下内容时

public static DepositEntities Current
{
   get
   {
      DepositEntities oc = new DepositEntities();
      return oc;
   }
}
当我从服务中获取数据时,一切正常,我没有问题


但无论我在哪里加入我的代码,我都有问题,因为它认为有不同的数据源,因为
新的存款实体()

您很可能遇到问题,因为WCF没有HttpContext.Current。阅读有关WCF中上下文的更多信息-此问题可能是一个良好的开端:


我还认为使用DI容器(即)管理ObjectContext的生存期会更好。有鉴于此,无需公开静态属性Current,这是WCF服务、单元测试等的问题。

请查看中的“在ASP.NET兼容模式下托管WCF服务”。它解释了如何在wcf服务中获取有效的HttpContext。

它是否引发异常或只是不返回任何数据?亲爱的@LosFrijoles异常只是对象引用,而不是设置为对象的实例。对于此行{DepositEntities oc=System.Web.HttpContext.Current.Items[“ObjectContext”]as DepositEntities;}但是当我想使用WCF时,这一行在我的整个项目中工作正常。我收到了这个错误
HttpContext
仅存在于ASP.NET Web应用程序的上下文中。Windows窗体应用程序没有
HttpContext
,因此无法使用它来缓存数据。。。。。您需要查看一些不依赖于
HttpContext
@marc的其他缓存方式。\s给我一些替代方案!?您可以查看新的.NET 4通用缓存命名空间,该命名空间可用于所有项目类型,不依赖于
HttpContext
或任何东西。您的答案似乎正确,但我找不到解决方案。这对我来说有点复杂!你能告诉我应该用哪一节课来解决这个问题吗!?我改变我的方式!我在客户端使用Web服务,而不是使用WCF