0

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

有谁知道为什么我在查询上下文时没有得到结果?有没有办法在不额外调用 SaveChanges 的情况下从上下文中获取实体?

谢谢

罗纳德

4

2 回答 2

1

Sounds like you are trying to Upsert here. Have you seen the support for InsertOrReplace? There is also InsertOrMerge, but I think you are looking to overwrite.

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

于 2012-10-11T14:20:39.653 回答
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才能获得您创建的对象?

于 2012-10-11T10:15:45.067 回答