添加对象后查询Azure TableServiceContext不会产生任何结果

时间:2012-10-11 09:57:49

标签: azure azure-table-storage

在我的应用程序中,我通过AddObject方法向TableServiceContext添加实体。稍后在进程中我想查询TableServiceContext以便检索此特定实体以更新某些属性,但查询不会给我一个结果。如果我在AddObject之后立即执行SaveChanges,它只会给我一个结果。这意味着我有一个额外的往返服务器。我想创建并更新实体,然后调用SaveChanges将实体持久保存到Azure表存储。

有人知道为什么我在查询上下文时没有得到结果吗?有没有办法如何从上下文中获取实体而无需额外调用SaveChanges?

由于

罗纳德

2 个答案:

答案 0 :(得分:1)

听起来你在这里试图Upsert。您是否看到过对InsertOrReplace的支持?还有InsertOrMerge,但我认为你要覆盖。

http://msdn.microsoft.com/en-us/library/hh452242.aspx

答案 1 :(得分:0)

AddObject只是开始跟踪本地内存中的对象,所以对我来说查询表存储没有返回它是有道理的。 (表存储不知道它。)我想说如果你想这样做,你应该自己跟踪新实体。

我对这个场景感到有点困惑。听起来你想要这样的东西(不会起作用):

var foo = new Foo();
context.AddObject("foo", foo);
...
foo = context.CreateQuery<Foo>("foo").Where(...).Single();
foo.bar = "baz";
context.UpdateObject(foo);
context.SaveChanges();

为什么不用这个替换?

var foo = new Foo();
...
foo.bar = "baz";
context.AddObject("foo", foo);

您的代码如何让您必须通过TableServiceContext来获取您创建的对象?