ええ、私は別の奇妙な質問でここにいます:)
透過的な Redis データ アクセス レイヤーを実装しようとしています。
N*1 と 1*1 のリレーションを Eagerly に読み込み、N*N と 1*N のリレーションを Lazily に読み込みます。
public class User
{
public long CityId {get;set;}
[EagerLoading]
[IgnoreDataMember]
public City {get;set;}
}
public class City
{
public ICollection<long> UserIds {get;set;}
[LazyLoading]
[IgnoreDataMember]
public ICollection<User> Users{get;set;}
}
CUD 操作 (Create、Update、Delete) に問題はありません。完全なオブジェクト階層を格納できます。
しかし、オブジェクトを取得するには、型指定されていない Get メソッドが必要です。
public class GenericRedisRepository
{
public object Get(string objectUrn)
{
using (var r = RedisManager.GetReadOnlyClient())
{
var pocoObject=r.GetObject(objectUrn); // I COULD NOT FIND THIS METHOD
foreach (var property in ReflectionHelper.GetEagerLoadingProperties(pocoObject))
{
// Fixup relations and load all EagerLoading properties recursively
}
}
}
}
任意のアイデアまたは代替方法..