Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
要查询/扫描的DynamoDB C#表达式_C#_Linq_Amazon Web Services_Lambda_Amazon Dynamodb - Fatal编程技术网

要查询/扫描的DynamoDB C#表达式

要查询/扫描的DynamoDB C#表达式,c#,linq,amazon-web-services,lambda,amazon-dynamodb,C#,Linq,Amazon Web Services,Lambda,Amazon Dynamodb,我有一个使用接口的通用存储库结构,我正试图为此开发一个DynamoDB实现。这是我第一次体验DynamoDB和NoSQL(以前都是T-SQL) 我遇到的问题是,我找不到任何方法将C#中的lambda表达式转换为可用于查询/扫描DynamoDB的格式 我的Get方法如下所示: public Task<TEntity> GetAsync(Expression<Func<TEntity, bool>> where) { return await this.D

我有一个使用接口的通用存储库结构,我正试图为此开发一个DynamoDB实现。这是我第一次体验DynamoDB和NoSQL(以前都是T-SQL)

我遇到的问题是,我找不到任何方法将C#中的lambda表达式转换为可用于查询/扫描DynamoDB的格式

我的Get方法如下所示:

public Task<TEntity> GetAsync(Expression<Func<TEntity, bool>> where)
{
    return await this.DataContext.ScanAsync(...);
}
public Task GetAsync(表达式,其中)
{
return等待this.DataContext.ScanAsync(…);
}
有没有现成的方法可以做到这一点?文档中似乎没有任何内容可以解决这个问题,我正在努力寻找其他人遇到类似问题的例子


也许我对NoSQL和/或DynamoDB缺乏经验就是这里的问题所在。如果是这样,请在必要时指出一种更好的方法,尽管我会注意到,正如前面提到的,我正在实现一个已经定义的接口,并且更改它并不是一个真正的选项。

据我所知,您可以使用,它类似于LINQ。 例如:

using System;
using Amazon;
using Amazon.DynamoDBv2;
using ServiceStack;
using ServiceStack.Text;
using ServiceStack.Aws.DynamoDb;
using ServiceStack.DataAnnotations;

var awsDb = new AmazonDynamoDBClient("keyId","key",
    new AmazonDynamoDBConfig { ServiceURL="http://localhost:8000"});
var db = new PocoDynamo(awsDb);

public class Todo
{
    [AutoIncrement]
    public long Id { get; set; }
    public string Content { get; set; }
    public int Order { get; set; }
    public bool Done { get; set; }
}

db.RegisterTable<Todo>();

db.DeleteTable<Todo>();  // Delete existing Todo Table (if any)
db.InitSchema();         // Creates Todo DynamoDB Table

var newTodo = new Todo {
    Content = "Learn PocoDynamo",
    Order = 1
};
db.PutItem(newTodo);

var savedTodo = db.GetItem<Todo>(newTodo.Id);
"Saved Todo: {0}".Print(savedTodo.Dump());

savedTodo.Done = true;
db.PutItem(savedTodo);

var updatedTodo = db.GetItem<Todo>(newTodo.Id);
"Updated Todo: {0}".Print(updatedTodo.Dump());

db.DeleteItem<Todo>(newTodo.Id);

var remainingTodos = db.GetAll<Todo>();
"No more Todos: {0}".Print(remainingTodos.Dump());
使用系统;
使用亚马逊;
使用Amazon.DynamoDBv2;
使用ServiceStack;
使用ServiceStack.Text;
使用ServiceStack.Aws.DynamoDb;
使用ServiceStack.DataAnnotations;
var awsDb=新的AmazonDynamoDBClient(“keyId”,“key”,
新的AmazonDynamoDBConfig{ServiceURL=”http://localhost:8000"});
var db=新PocoDynamo(awsDb);
公共课待办事项
{
[自动增量]
公共长Id{get;set;}
公共字符串内容{get;set;}
公共整数顺序{get;set;}
公共bool Done{get;set;}
}
db.RegisterTable();
db.DeleteTable();//删除现有Todo表(如果有)
db.InitSchema();//创建Todo DynamoDB表
var newTodo=新Todo{
Content=“学习PocoDynamo”,
订单=1
};
db.PutItem(纽托多);
var savedTodo=db.GetItem(newTodo.Id);
“保存的Todo:{0}”.Print(savedTodo.Dump());
savedTodo.Done=true;
db.PutItem(保存的Todo);
var updatedTodo=db.GetItem(newTodo.Id);
更新的Todo:{0}.Print(updatedTodo.Dump());
db.DeleteItem(newTodo.Id);
var remainingTodos=db.GetAll();
“不再有TODO:{0}.Print(remainingTodos.Dump());

您在寻找吗?看起来这可能会有帮助,但我似乎找不到任何您实际如何使用它的示例!您应该能够在guthub上找到一些示例,代码已经迁移到了guthub上,或者在上面提到的文章中。