我有一个完全空的 RavenHQ 数据库,它链接到我的 Appharbor 应用程序。数据库当前使用的空间量是我的青铜帐户可用的 25mb 空间中的 1.1mb。数据库以前有记录,但我在管理工作室中使用“删除集合”删除了它们。
我第一次调用 session.Store(myobject),在调用 .SaveChanges() 之前,我收到以下错误。
System.InvalidOperationException: Url: "/docs/Raven/Hilo/AccItems"
Raven.Database.Exceptions.OperationVetoedException: PUT vetoed by Raven.Bundles.Quotas.Triggers.DatabaseSizeQoutaForDocumetsPutTrigger because: Database size is 45,347 KB, which is over the allowed quota of 25,600 KB. No more documents are allowed in.
现在,文档肯定没那么大,所以我不知道这个错误意味着什么,尤其是因为我没有通过调用 SaveChanges 关闭会话,所以我认为我什至没有访问数据库()。有任何想法吗?这是代码本身。
XDocument doc = XDocument.Parse(rawXml);
var accItems = ExtractItemsFromFeed(doc);
using (IDocumentSession session = _store.OpenSession())
{
var dbItems = session.Query<AccItem>().ToList();
foreach (var item in accItems)
{
var existingRecord = dbItems.SingleOrDefault(x => x.Source == x.SourceId == cottage.SourceId);
if (existingRecord == null)
{
session.Store(item);
_logger.Info("Saved new item {0}.", item.ShortName);
}
else
{
existingRecord.ShortName = item.ShortName;
_logger.Info("Updated item {0}.", item.ShortName);
}
session.SaveChanges();
}
}
任何其他有关此代码样式的评论都将受到欢迎,因为我不确定处理“更新现有项目或在不存在时创建”方案的最佳方法。