我想知道使用.net客户端给出以下场景会发生什么.
using (IDocumentSession session = documentStore.OpenSession())
{
thingToUpdate = session.Load<TUpdateThing>(id);
// Modify thingToUpdate here
// ** Someplace else the object is updated and saved. **
session.SaveChanges(); // What happens here?
}
Run Code Online (Sandbox Code Playgroud)
这会根据etag的变化自动抛出错误,还是会关闭并覆盖其他人所做的更改?
我已经在http api上看到了一些关于这个的东西:http: //ravendb.net/docs/http-api/http-api-comcurrency
无论如何在没有安装RavenDB的情况下使用NServicebus 4?我们正在使用2.5,我想升级到4但如果我们必须在生产服务器上安装RavenDB,这将是一个艰难的销售.有什么工作吗?
我正在尝试创建一个索引,该索引允许我按日期降序检索前 n 个项目。
似乎没有选项可以按日期对索引进行排序?
我需要能够使用带子句的索引进行查询Take(n)以获取最后的n项目。
public class ConcernStateByDateIndex : AbstractIndexCreationTask<ConcernState>
{
public ConcernStateByDateIndex()
{
this.Map = concerns => from concern in concerns
select concern.EntryDate;
this.Sort(_ => _.EntryDate, SortOptions.?????)
}
}
Run Code Online (Sandbox Code Playgroud) 我在C#web项目中使用RavenDb.我有一个对象,我需要查询其子集合,每个子对象1行和一些根/父对象属性.
注意:这不是实际设计,只是简化了这个问题.
public class OrderLine
{
public string ProductName { get; set; }
public int Quantity { get; set; }
public DateTime? ShipDate { get; set; }
}
public class Order
{
public int OrderId { get; set; }
public string CustomerName { get; set; }
public DateTime OrderDate { get; set; }
public List<OrderLine> OrderLines { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
订单行的订单是一个单独的文档.ShipDate将在每一行更新,因为并非所有产品都有库存.
我需要能够创建使用以下列发送的最近10个产品的列表:
OrderId
Customer
ProductName
ShipDate
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为不支持SelectMany:
var query = from helper in RavenSession.Query<Order>()
.SelectMany(l => l.OrderLines, (order, orderline) …Run Code Online (Sandbox Code Playgroud) 有人知道如何删除RavenDB Management Studio中的ravendb文档吗?
如果我转到文档的详细信息页面,我可以执行所有操作(包括更新),但禁用删除按钮.
我已经尝试将AnonymousAccess设置为"All"并重新启动服务器,但它没有改变任何东西.
我使用RavenDB 1.0.0.426
在将数据从外部源导入RavenDB时,我只是经历了一个奇怪的场景:
我选择使用与外部源使用相同的唯一ID,前缀为某个字符串.但.当我存储ID为以'/'结尾的文档时,raven会自动在ID的末尾添加一个数字,导致文档不会覆盖使用相同ID存储的现有文档.
我重新创建了一个简单的场景来导致错误:
我保存的类型:
public class Foo
{
public string Id { get; set; }
public Foo(string id)
{
Id = id;
}
}
Run Code Online (Sandbox Code Playgroud)
保存具有相同ID 10次的文档的方法,然后检查文档计数:
public void RunTest(string id)
{
for (int i = 0; i < 10; i++)
{
using (var doc = new DocumentStore() { Url = "http://pc-009:8080/" })
{
doc.Initialize();
using (var session = doc.OpenSession())
{
session.Store(new Foo(id));
session.SaveChanges();
}
}
}
// Wait for the data to be persisted
Thread.Sleep(2000);
using (var doc …Run Code Online (Sandbox Code Playgroud) 我只是想确定Raven DB使用的文件系统上的文件是否加密?有人可以直接打开文件系统上的文件并直接将它们从二进制转换为ASCII,还是加密?
我试图说服我们的管理层给RavenDB一个机会,但他们担心安全问题.他们给出的示例是,您不能只打开MS SQL db文件,将其从二进制转换为ASCII,然后读取它.所以我试图验证RavenDB是否也阻止了这种事情?
我将大量数据插入RavenDB数据库; 大约2 500000条记录.这需要在尽可能短的时间内完成.
我使用一个列表来保存SaveChangesAsync返回的Task对象:
session.Store(loc);
splitter++;
if (splitter % 2048 == 0)
{
var t = session.SaveChangesAsync();
tasks.Add(t);
if (tasks.Count == 2)
{
Task.WaitAll(tasks.ToArray());
tasks.Clear();
}
}
Run Code Online (Sandbox Code Playgroud)
此代码在具有i7(8核)和12 GB RAM的机器上运行.如果我持有的Task对象的数量是2(如您在代码中看到的那样),但是如果我将此数字增加到8(核心数),则会收到System.IndexOutOfRangeException(有时会出现System.AggregateException: Raven.Abstractions.Exceptions.ConcurrencyException:PUT尝试使用非当前的etag文档'X/I'.
这里有什么问题?
谢谢
与RavenDB陷入了一个奇怪的问题
public ActionResult Save(RandomModel model)
{
//Do some stuff, validate model etc..
RavenSession.Store(model);
RavenSession.SaveChanges();
var newListOfModels = RavenSession.Query<RandomModel>().ToList();
return View("randomview",newListOfModels);
}
Run Code Online (Sandbox Code Playgroud)
newListOfModels不包含我刚用store方法添加的模型.
但是,如果我在savechanges之后添加Thread.Sleep(100),则存储的模型将包含在新列表中.
我是以错误的方式存储和保存到RavenDB的东西吗?
我该怎么做?
当然,只需将传入的模型添加到newListOfModels并运行SaveChanges,例如在basecontrollers onactionexecuted方法中,就可以解决这个问题.
我主要担心的是为什么我需要延迟线程才能查询documentsession并在那里找到我新添加的模型.
我正在学习RavenDB并熟悉工作原理.我不明白的一件事是如何将raven创建的id保存到属性中.
public class User
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string ID { get; set; } //This will be null when I save object to DB I want it to be same as generated
}
[TestMethod]
public void TestSaving()
{
using (var session = documentStore.OpenSession())
{
var user = new User { FirstName = "John", LastName = "Doe" };
session.Store(user);
session.SaveChanges(); //I want that property to save that id that …Run Code Online (Sandbox Code Playgroud) ravendb ×10
c# ×6
asynchronous ×1
encryption ×1
indexing ×1
insert ×1
linq ×1
nosql ×1
nservicebus ×1
nservicebus4 ×1