كيفية تحديد جميع المستندات من نوع في RavendB
سؤال
حتى الآن ، جربت ما يلي:
public class Widget
{
public int Id;
public string Name;
}
public static class Main
{
public static void Main()
{
// Initialize store and preload with widgets...
using (var session = store.OpenSession())
{
var widgets = session.Load<Widget>();
foreach(var widget in widgets)
{
Console.WriteLine(widget.Name);
}
}
}
}
لقد تمكنت من تحميل كل شيء عن طريق إضافة فهرس ثم استخدام هذا الفهرس كاستعلام:
var store = new DocumentStore();
store.DatabaseCommands.PutIndex("AllWidgets", new IndexDefinition<Widget>
{
Map = widget => from widget in widgets
select new { widget }
});
// Back in Main
var widgets = session.Query<Widget>("AllWidgets");
// Do stuff with widgets.
هل هناك طريقة للحصول على جميع المستندات من النوع Widget
دون الحاجة إلى إنشاء فهرس؟
في هذه المرحلة ، ألعب مع Ravendb في بيئة صندوق الرمل. أدرك أن هذا ليس هو أفضل طريقة لجلب البيانات.
المحلول
نعم
استخدم استعلام DocumentSbyName - هذا بقدر ما أستطيع العمل ليس بديهيًا في واجهة العميل في الوقت الحالي ، ولكنه يبدو مثل هذا:
documentSession.LuceneQuery<ImageDocument>("Raven/DocumentsByEntityName")
.Where("Tag:Widgets")
.Take(100)
.ToArray();
يساعد إذا كنت تعرف API HTTP أحيانًا :)
NB: لاحظ كيف تتردد بالنسبة لك ، هذه اتفاقية ويمكن تجاوزها.
ملاحظة: في الشوكة غير المستقرة (من المحتمل أن تكون مستقرة قريبًا ، يمكن تحقيق ما سبق بسهولة
documentSession.Query<ImageDocument>().Take(100).ToArray()
افضل بكثير
لا تنتمي إلى StackOverflow