我在 Redis 上使用事务并使用 StackExchange.Redis 提供程序。
我有大量用于事务的 StringSetAsync 操作。
我在使用 StringSetAsync 时遇到了错误:
RuntimeBinderException 被捕获
“StackExchange.Redis.ITransaction”不包含“StringSetAsync”的定义
堆栈跟踪:
在 CallSite.Target(Closure, CallSite, ITransaction, String, Object) 在 Repository.RedisDatabaseContextBase.SetRecord(IBasicRedisEntity redisEntity, Boolean isNewRecord)
====
添加:
这是反映问题的代码示例。Marc 是对的,一切都与动态有关。
try
{
ConnectionMultiplexer cm = ConnectionMultiplexer.Connect("localhost:6380,allowAdmin=true");
var db = cm.GetDatabase();
ITransaction transaction = db.CreateTransaction();
dynamic pp = new byte[5] {1, 2, 3, 4, 5};
transaction.StringSetAsync("test", pp);
if (transaction.Execute())
{
Console.Write("Committed");
}
else
{
Console.Write("UnCommitted");
}
Console.ReadLine();
}
catch (Exception e)
{
Console.WriteLine(e);
}