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