繁体   English   中英

WCF /实体框架更新

[英]WCF / Entity framework update

我目前正在构建一个N层应用程序,其中在我的IIS服务器上的Web项目上托管了WCF服务(而不是数据/ RIA服务),并且在Windows Phone客户端上带有指向该WCF服务的服务参考。

我的WCF服务通过实体框架访问数据库。

这是我的问题:当我从客户端以外的任何地方更新数据库时,在任何客户端中都看不到更新。 当我从特定客户端更新数据库时,修改只能由他看到。

但是过了一会儿,所有客户端都可以访问更新的数据。

我相信这可能是由WCF数据的IIS缓存或LINQ级别的缓存引起的,但是即使禁用了IIS缓存,问题仍然存在。

关于如何解决此问题的任何想法?

谢谢

因此,将其转为正式答案:

框架将尝试缓存值(而不是IIS)。 因此,请确保您没有将工作单元扩展到事务范围之外(即,将其用于相同的事务方法和检索方法)。 另外,尝试在存储/检索调用之间重新建立上下文,这将删除框架中可能存在的任何现有缓存。

[OperationContract]
public void Save(MyObject entity)
{
  using (MyEntities db = new MyEntities())
  {
    db.MyObjects.Add(entity);
    db.SaveChanges();
  }
}

[OperationContract]
public MyObject Single(Int32 id)
{
  using (MyEntities db = new MyEntities())
  {
    return db.MyObjects.Single(x => x.Id == id);
  }
}

相对于:

[ServiceContract]
class MyService
{
  private MyEntities db = new MyEntities();

  [OperationContract]
  public void Save(MyObject entity)
  {
    this.db.MyObjects.Add(entity);
    this.db.SaveChanges();
  }

  [OperationContract]
  public MyObjectFind(Int32 id)
  {
    return this.db.MyObjects.Single(x => x.Id == id);
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM