0
ここにいくつかの助けが必要です。 DotNetコアを使用すると、IDistributedCacheを使用してRedisからオブジェクトのJSON配列を保存および取得しようとしています。以下は、私が保存したいオブジェクトがこのdotnet core RedIsにオブジェクトを保存する
public IQueryable<RuleLoadCollection_Result> GetRuleLibrary()
{
var result = _dbClient.GetRuleLibrary();
_cache.Save("TestKey", result);
return result;
}
のようにオブジェクトを保存しています、私のビズ・ロジックで
あるRedisのキャッシュから保存や読み込みのための私のコード
public void Save(string key, object content, int duration)
{
string s;
if (content is string)
{
s = (string)content;
}
else
{
s = JsonConvert.SerializeObject(content);
}
duration = duration <= 0 ? DefaultCacheDuration : duration;
Cache.Set(key, Encoding.UTF8.GetBytes(s), new DistributedCacheEntryOptions()
{
AbsoluteExpiration = DateTime.Now + TimeSpan.FromSeconds(duration)
});
}
public T Get<T>(string key) where T : class
{
var c = Cache.Get(key);
if (c == null)
{
return null;
}
var str = Encoding.UTF8.GetString(c);
if (typeof(T) == typeof(string))
{
return str as T;
}
return JsonConvert.DeserializeObject<T>(str);
}
です
ここの出力はオブジェクトの配列です。
[{"ruleId":1,"ruleName":"a1"}]
キャッシュから同じオブジェクト配列を返すには、どのようなコードを書きますか?私はいくつかのオプションを試しました、それらのほとんどはコンパイルエラーまたはランタイムエラーを与えました。閲覧のビットの後、私は以下を試してみましたが、それはうまくいったのですが、配列の最初の要素だけを与えています。このため
public RuleLoadCollection_Result GetRuleLibraryFromCache()
{
return (_cache.Get<List<RuleLoadCollection_Result>>("TestKey").First());
}
出力は、私は理由を理解するが、何のC#、私は私が保存されたJSON配列の裏に書くべき
{"ruleId":1,"ruleName":"a1"}
のですか?コードの下
は、ランタイムエラーが助けてください
"Cannot create and populate list type System.Linq.IQueryable`1[RuleLoadCollection_Result]. Path '', line 1, position 1."
ある
public IQueryable<RuleLoadCollection_Result> GetRuleLibraryFromCache()
{
return (_cache.Get<IQueryable<RuleLoadCollection_Result>>("TestKey"));
}
ランタイムエラーになります。
ありがとうございました。