Я пытаюсь написать запрос в .net для orient db, и я не уверен, поддерживает ли API UPSERT, как в документации.Как написать запрос «UPSERT» для Orientdb в .net, C#?
ответ
Я могу дать вам пример UPDATE/UPSERT
с C#
. В следующем коде создается новая база данных и относительные классы TestDatabaseName
(Users
) и ее свойства (userID
). В противном случае, если база данных уже существует, она выполняет команду UPDATE/UPSERT
.
C# Код:
using System;
using Orient.Client;
namespace Stack37995408
{
static class Stack37995408
{
private static string _hostname = "127.0.0.1";
private static int _port = 2424;
private static string _rootUserName = "root";
private static string _rootUserPassword = "root";
private static OServer _server;
private static string _DBname = "TestDatabaseName";
private static string _username = "root";
private static string _password = "root";
private static string _aliasDB = "myTestDatabaseAlias";
static void Main(string[] args)
{
_server = new OServer(_hostname, _port, _rootUserName, _rootUserPassword);
if (!_server.DatabaseExist(_DBname, OStorageType.PLocal))
{
_server.CreateDatabase(_DBname, ODatabaseType.Graph, OStorageType.PLocal);
Console.WriteLine("Database " + _DBname + " created");
//Connect to the DB
OClient.CreateDatabasePool(
_hostname,
_port,
_DBname,
ODatabaseType.Graph,
_username,
_password,
10,
_aliasDB
);
Console.WriteLine("Connected to the DB " + _DBname);
using (ODatabase database = new ODatabase(_aliasDB))
{
//Classes and properties creation
database
.Create
.Class("Users")
.Extends<OVertex>()
.Run();
database
.Create
.Property("userID", OType.Integer)
.Class("users")
.Run();
//Populate the DB
OVertex vertexUser = new OVertex();
vertexUser.OClassName = "Users";
vertexUser
.SetField("userID", 1);
OVertex createVertexUser = database
.Create.Vertex(vertexUser)
.Run();
Console.WriteLine("Created vertex " + createVertexUser.OClassName + " with @rid " + createVertexUser.ORID + " and userID " + createVertexUser.GetField<int>("userID"));
}
}
else
{
//Connection
OClient.CreateDatabasePool(
_hostname,
_port,
_DBname,
ODatabaseType.Graph,
_username,
_password,
10,
_aliasDB
);
Console.WriteLine("Connected to the DB " + _DBname);
using (ODatabase database = new ODatabase(_aliasDB))
{
database
.Update()
.Class("Users")
.Set("userID", 2)
.Upsert()
.Where("userID")
.Equals(2)
.Run();
Console.WriteLine("Operation executed");
}
}
}
}
}
Первое исполнение (DB, классы, свойства и создание первой вершиной):
Выход:
Started Thread 4320
Database TestDatabaseName created
Started Thread 7184
Connected to the DB TestDatabaseName
Created vertex Users with @rid #11:0 and userID 1
Started Thread 4368
Студия Выход :
Второе исполнение (я стараюсь обновлять вершину с userID = 2
, но команда UPSERT
создает его, потому что он не существует):
Раздел:
database
.Update()
.Class("Users")
.Set("userID", 2)
.Upsert()
.Where("userID")
.Equals(2)
.Run();
Выход:
Started Thread 6172
Started Thread 7244
Connected to the DB TestDatabaseName
Operation executed
Started Thread 5860
Студия Выход:
Надеется, что это помогает
Большое спасибо! это помогает. Так что, если я хочу добавить больше параметров в пункт «где»? Могу ли я это сделать? –
Привет @Howard Roark, да, это простой пример, но если вы хотите, вы можете добавить больше параметров (более '.Set()' для установки нескольких полей '.And()' после '.Where()' для проверки нескольких условий, ecc ...). Надеюсь, что это было полезно. – LucaS
Абсолютно очень полезно! Спасибо большое! –
- 1. Orientdb upsert с помощью Java
- 2. OrientDB края upsert вопросы
- 3. mongoimport запрос для upsert поля
- 4. Mongodb - Как я могу написать Push Upsert в C#?
- 5. Как написать запрос на обновление OrientDB с Spring Data
- 6. Запрос в OrientDB
- 7. Запрос OrientDB для иерархических данных
- 8. Upsert with .net sqladapter
- 9. Населенный запрос в orientdb
- 10. OrientDB: Запрос дерево
- 11. OrientDB - запрос соответствия для рекомендателя
- 12. Как вы могли бы написать Upsert для LINQ to SQL?
- 13. Как написать искусственный интеллект в .net (C#)
- 14. Получение @rid при обновлении Upsert в OrientDB без повторного поиска
- 15. Postgresql upsert запрос
- 16. Как перенести Massiveinsert в OrientDB .Net API?
- 17. Запрос на OrientDB графике
- 18. Как написать параметризованные запрос в .NET Framework 1.1
- 19. Как написать SQLite-запрос в C#?
- 20. Как написать запрос вставки в C#?
- 21. Как написать этот запрос в linq (C#)?
- 22. OrientDB - Групповой запрос
- 23. OrientDB Studio - получить строковое значение от UPDATE .. UPSERT ВОЗВРАЩЕНИЕ ПЕРЕД
- 24. Запрос OrientDB слишком медленный
- 25. OrientDB края Запрос
- 26. Как применить отличительный запрос в OrientDB?
- 27. 2-х шаги запрос в OrientDB
- 28. Как написать запрос для этого?
- 29. Как написать список для копирования в .NET.
- 30. OrientDB C# Обновление синтаксиса
Это выглядит как API поддерживает UPSERT. вам нужен пример? http://orientdb.com/docs/2.2/SQL-Update.html – Venky
'orientdb> UPDATE Client SET id = 23 UPSERT WHERE id = 23' Обновляет запись, если она существует. В противном случае вставляет запись. – Venky
Да, вена, пример будет замечательным! благодаря! –