CouchDBとCはかります.EFcoreのようなクエリ!
12642 ワード
このポストでは、どのようにクエリを参照してください
私は図書館を利用して数年後、今日はV 3に達した.0.0CouchDB.NET .
CouchDBとは
Apache CouchDB 分散文書データベースとそのレプリケーションプロトコルはサーバから携帯電話やウェブブラウザに利用可能である.
話す
どのようにCouchDB.ネットヘルプ
あなたが働いたならば
セットアップ
クリエイトユア
LINQを使う
ライブラリはネイティブをサポートします.NET LINQ , SQL文のような構文.
データベースへの送信
ちょうどいくつかの名前を付ける マージ多重 フィルタから無駄な状態を取り除く 変換 変換
その他の機能
年では、より多くの機能が追加されている.
例えば、 文書の追加/更新/削除; インデックスの追加/更新/削除; データベース唾消し ビュー 地方文書 ユーザー管理;
依存性注入
あなたが働くならば
それは、依存関係を登録するのと同じくらい簡単です
最後に
あなたが働くならば
すべてのことを見ることができますREADME そして、あなたが何を考えるかについて知らせてください.
CouchDB
からC#
LINQを使う!私は図書館を利用して数年後、今日はV 3に達した.0.0CouchDB.NET .
CouchDBとは
Apache CouchDB 分散文書データベースとそのレプリケーションプロトコルはサーバから携帯電話やウェブブラウザに利用可能である.
話す
JSON
ネイティブは、使用するときに素晴らしいですJavascript
, でも使うとき.NET
JSONのダイナミックな性格のため痛いかもしれません.どのようにCouchDB.ネットヘルプ
あなたが働いたならば
Entity Framework
以前に、このライブラリはよく見るかもしれません.セットアップ
クリエイトユア
CouchContext
データベースのリストを使用して認証を設定します.
Rebel
is of typeCouchDocument
as it contains things like Id, Rev, Attachments, and others.
public class MyDeathStarContext : CouchContext
{
public CouchDatabase<Rebel> Rebels { get; set; }
protected override void OnConfiguring(CouchOptionsBuilder optionsBuilder)
{
optionsBuilder
.UseEndpoint("http://localhost:5984/")
.EnsureDatabaseExists()
.UseBasicAuthentication(username: "anakin", password: "empirerule");
}
}
LINQを使う
ライブラリはネイティブをサポートします.NET LINQ , SQL文のような構文.
await using var context = new MyDeathStarContext();
var skywalkers = await context.Rebels
.Where(r =>
r.Surname == "Skywalker" &&
(
r.Battles.All(b => b.Planet == "Naboo") ||
r.Battles.Any(b => b.Planet == "Death Star")
)
)
.OrderByDescending(r => r.Name)
.ThenByDescending(r => r.Age)
.Take(2)
.Select(
r => r.Name,
r => r.Age
})
.ToListAsync();
データベースへの送信
{
"selector": {
"$and": [
{
"surname": "Skywalker"
},
{
"$or": [
{
"battles": {
"$allMatch": {
"planet": "Naboo"
}
}
},
{
"battles": {
"$elemMatch": {
"planet": "Death Star"
}
}
}
]
}
]
},
"sort": [
{ "name": "desc" },
{ "age": "desc" }
],
"limit": 2,
"fields": [
"name",
"age"
]
}
これは自動的にクエリを最適化します.ちょうどいくつかの名前を付ける
Where
呼び出しWhere(r => true || r.Age == 19)
); SingleOrDefault(d => condition)
to Where(d => condition).Take(2).SingleOrDefault()
; Max(d => d.Property)
to OrderByDescending(d => d.Property).Take(1).Select(d => d.Property).Max()
その他の機能
年では、より多くの機能が追加されている.
例えば、
依存性注入
あなたが働くならば
Asp.NET Core
エーDI package が利用可能です.それは、依存関係を登録するのと同じくらい簡単です
Startup
:services.AddCouchContext<MyDeathStarContext>(builder => builder
.UseEndpoint("http://localhost:5984")
.UseBasicAuthentication(username: "admin", password: "admin"));
それからコンテキストを入力します.public class RebelsController : Controller
{
private readonly MyDeathStarContext _context;
public RebelsController(MyDeathStarContext context)
{
_context = context;
}
}
最後に
あなたが働くならば
CouchDB
and C#
私は非常にライブラリをチェックすることをお勧めします.すべてのことを見ることができますREADME そして、あなたが何を考えるかについて知らせてください.
Reference
この問題について(CouchDBとCはかります.EFcoreのようなクエリ!), 我々は、より多くの情報をここで見つけました https://dev.to/matteobortolazzo/couchdb-and-c-efcore-like-queries-2ma4テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol