我正在尝试更新或插入数据库中的某个元素(如果不存在),但是到目前为止,我还没有找到有关如何使用数据库中提供的Update
和Filter
的任何示例。 C#Api。(C#Api,不是RethinkDB Reql)。
链接到api:https://github.com/bchavez/RethinkDb.Driver
有人可以帮助我吗?
POCO
class Player
{
public long playerId { get; set; }
public long groupId { get; set; }
public int type { get; set; }
public double lat { get; set; }
public double lng { get; set; }
}
class PlayerRequest
{
public Player data { get; set; }
public Auxdata aux { get; set; }
}
这将是插入请求:
dynamic rez = await r.Db(Constants.DB_NAME).Table(Constants.TABLE_CLIENT)
.Insert(playerRequest.data).RunAsync(Con);
我需要基于playerRequest.data
执行playerId
的更新,如果不存在,请插入Player
。
我已经搜索了Api,但到目前为止没有成功。
PS 我曾尝试安装Linq to ReQL扩展程序,但方法无法使用。
答案 0 :(得分:0)
在搜索并询问对我有很大帮助的驱动程序作者之后(谢谢Brian!),解决方案如下:
在Js中,我们使用{prop1:value1,prop2,value2}
C#等效项正在使用匿名类型:new{prop1:value1,prop2:value2}
r.Db(Constants.DB_NAME).Table(Constants.CLIENT_TABLE)
.Filter(new { playerId = playerRequest.data.playerId })
.Update(new { lng = playerRequest.data.lng, lat = playerRequest.data.lat })
.RunResult<QueryResult>(this.Con);
同样,为了进一步解释,您必须阅读github存储库Wiki的以下部分: https://github.com/bchavez/RethinkDb.Driver/wiki/Extra-C%23-Driver-Features
在不确定如何使用方法检查Java驱动程序实现时,它们是相似的(C#驱动程序扩展了Java驱动程序)