Wcf 在实体框架中卸载数据引用
目前,我正在努力解决实体框架问题。我有一个位于ef框架之上的wcf服务,它允许对框架进行查询。在某个时刻,用户可以从框架请求一个文件。这些文件由解决方案条目引用,因此当您从解决方案请求文件时,将加载引用以获得对文件存储的访问权限 这一切都很好,但从那时起,每当您执行另一个返回该解决方案条目的查询时,整个文件都会附加到返回结果。我需要某种分离或卸载引用的方法,这样结果条目将只包含对文件存储的卸载引用 我试图创建一个新的上下文并查询该上下文以从中检索信息,但当我这样做时,原始上下文中的实体也会发生更改 我尝试从原始上下文中分离实体,然后从新上下文中进行查询。这也行不通 我找到了一种方法。对于所有非文件下载查询,我分离结果实体,并通过网络发送。但我不确定这是否是最好的方式Wcf 在实体框架中卸载数据引用,wcf,entity-framework,Wcf,Entity Framework,目前,我正在努力解决实体框架问题。我有一个位于ef框架之上的wcf服务,它允许对框架进行查询。在某个时刻,用户可以从框架请求一个文件。这些文件由解决方案条目引用,因此当您从解决方案请求文件时,将加载引用以获得对文件存储的访问权限 这一切都很好,但从那时起,每当您执行另一个返回该解决方案条目的查询时,整个文件都会附加到返回结果。我需要某种分离或卸载引用的方法,这样结果条目将只包含对文件存储的卸载引用 我试图创建一个新的上下文并查询该上下文以从中检索信息,但当我这样做时,原始上下文中的实体也会发生更
我希望有人能够提供一些见解,感谢您的努力。您遇到的问题可能是“更改跟踪”,默认情况下该选项处于启用状态 可能的解决方案: 使用禁用更改跟踪 如果上述解决方案不起作用,这可能有助于为您指明如何处理此问题的正确方向 我最近也遇到了类似的问题。问题是上下文维护了对我正在使用的对象的引用(显然)。每次我对同一类型的对象进行更改时,即使是使用新的上下文(我认为是这样)获得的对象也在更改 在我的一位同事的帮助下,我们确定,由于我在IoC容器中注册它的方式(每个web请求的生活方式),上下文一直存在。当我将生活方式更改为transient(它最终提供了一个新实例)时,对相同类型对象的更改不会受到影响
希望这会有所帮助。您能否澄清您是如何托管WCF服务(自托管或IIS托管)的,并解释文件中包含的解决方案引用的含义(引用与文件的关系如何)。由于实体框架的原因,该网站是以IIS托管的,且引用与文件相关。这些文件位于单独的表中,但通过外部键链接到信息表。因此,要从信息表访问链接实体,必须加载文件引用。一旦延迟加载发生,您就无法卸载链接。您的意思是所有文件都在数据库中,并且您有文件的实体类型吗?如果是这样,当您说您已经尝试分离实体时,这是“解决方案”实体还是文件实体?后者应该有用。哈哈…老兄…不知道你在20多年前问了这个问题!我相信你现在已经解决了这个问题=)希望答案能帮助其他人。谢谢Rich。我一定会尝试一下。我想最后我还是坚持了问题中提到的“解决方案”,但这很可能教会我一些新东西D
using (MyEntities _context = new MyEntities())
{
_context.Widgets.MergeOption = MergeOption.NoTracking;
return _context.Widgets.ToList();
}