是否可以在创建查询后添加多个where子句.例如,以下查询正确返回1结果:
var q1 = session.Query<Template>()
.Where(x => x.Tags.Any(y => y == "one"))
.Where(x => x.Tags.Any(y => y == " two"));
var r1 = q1.ToList();
Run Code Online (Sandbox Code Playgroud)
但是这个表现就好像没有where条件并且返回30个结果:
var q2 = session.Query<Template>();
q2.Where(x => x.Tags.Any(y => y == "one"));
q2.Where(x => x.Tags.Any(y => y == " two"));
var r2 = q2.ToList();
Run Code Online (Sandbox Code Playgroud)
ravendb是否支持第二个例子?为什么两个查询不等同?
我想在RavenDB中插入1000000个文档.
class Program
{
private static string serverName;
private static string databaseName;
private static DocumentStore documentstore;
private static IDocumentSession _session;
static void Main(string[] args)
{
Console.WriteLine("Start...");
serverName = ConfigurationManager.AppSettings["ServerName"];
databaseName = ConfigurationManager.AppSettings["Database"];
documentstore = new DocumentStore { Url = serverName };
documentstore.Initialize();
Console.WriteLine("Initial Databse...");
_session = documentstore.OpenSession(databaseName);
for (int i = 0; i < 1000000; i++)
{
var person = new Person()
{
Fname = "Meysam" + i,
Lname = " Savameri" + i,
Bdate = DateTime.Now,
Salary = 6001 …Run Code Online (Sandbox Code Playgroud) 我正在尝试利用RavenDB的DocumentConvention API在我的域对象上自动设置增量ID.
我在IDocumentStore上使用这行代码完美地工作了:
DocumentStore.Conventions.RegisterIdConvention<User>
((dbname, commands, user) => "users/" + commands.NextIdentityFor("users"));
Run Code Online (Sandbox Code Playgroud)
每当我存储没有已设置ID的新User对象时,这将创建具有"users/1","users/2"等的用户对象的顺序ID .
但是,我想为Async文档会话执行此操作,但是在调用RegisterAsyncIdConvention()时无法找到有关如何从会话中获取"Next Identity"的任何文档...
docStore.Conventions.RegisterAsyncIdConvention<User>
((dbname, commands, user) => "users/" + commands.NextIdentityFor("users"));
Run Code Online (Sandbox Code Playgroud)
......不编译,因为NextIdentityFor不可用的IAsyncDatabaseCommands接口.
任何人都可以给我任何提示吗?还有人试过这个吗?
谢谢.
这里我使用事务范围存储transactionSummary类型的文档,如下所示
public class TransactionSummary
{
[JsonIgnore]
public Guid? Etag { get; set; }
public String Id { get; set; }
public String TransactId { get; set; }
public OpenOrClosed BalanceType { get; set; }
public TransactStatus Status { get; set; }
public String PayeeAccountNo { get; set; }
public Decimal AmountPaid { get; set; }
}
using (var trans = new TransactionScope())
{
using (IDocumentSession sess = GetConnection())
{
sess.Store(fldtrans);
sess.SaveChanges();
}
trans.complete();
}
Run Code Online (Sandbox Code Playgroud)
在立即存储之后我需要检索它,所以我按照以下方式进行操作
using (IDocumentSession sess = GetConnection()) …Run Code Online (Sandbox Code Playgroud) 我正在使用RavenDB 2.5.2879,我发现了一个问题.那是一个错误吗?
当我使用FirstOrDefault()时,查询效果很好.
session.Query<QueryModel>("App/Entities").Where(x => x.Tag == "Clients").OfType<Client>().FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
当我使用LastOrDefault()时,我得到一个异常"无法理解表达式:.Where(x =>(x.Tag =="Clients")).OfType().LastOrDefault()"
session.Query<QueryModel>("App/Entities").Where(x => x.Tag == "Clients").OfType<Client>().LastOrDefault();
Run Code Online (Sandbox Code Playgroud) 有没有办法获取 RavenDB 中每个会话的请求计数,以便将其用于优化?比如减少拨打的电话等。我知道 RavenDB 将其限制为每个会话 30 个。我想知道的是在任何给定时间发出的请求的数量。(在代码中,在运行时)。
如果我的Raven Db(http://ravendb.net/)称为"测试",我如何以编程方式检查?
最好的祝福
我是RavenDB和HangFire的新手,我正在创建一个后台任务但是当我查询ravendb文件时出现索引错误,如下所示:
public static void UpdateDoNotDisturb()
{
IList<HotelRoom> rooms = new List<HotelRoom>();
Hotel project;
IQueryable<HotelRoom> queryableObj;
//Update Rooms with DND status and DndUntil greater than now.
using (var session = MvcApplication.DocumentStore.OpenSession())
{
queryableObj = session.Query<HotelRoom, HotelRoom_Search>().Where(x => x.Status == "DND" && x.DndUntilUtc < DateTime.Now).OfType<HotelRoom>();
//queryableObj = session.Query<HotelRoom, HotelRoom_Search>().Where(x => x.Status == "DND").OfType<HotelRoom>();
using (var enumerator = session.Advanced.Stream(queryableObj))
{
while (enumerator.MoveNext())
{
var room = enumerator.Current.Document;
rooms.Add(room);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
在文件上:
{
"HotelId": "hotels/1474",
"RoomNumber": "407",
"Floor": "4th Floor",
"Status": "DND", …Run Code Online (Sandbox Code Playgroud)